Archivio

Archivio per la categoria ‘Java’

Scheme Java -> Tiles

29 Agosto 2010 Nessun commento
1 Star2 Stars3 Stars4 Stars5 Stars (Ancora nessun voto)
Loading...

Scheme:

(define ht
  (lambda (d)
    (lambda (k)
      (if (= k 0)
          (if (> d 0) 0 1)
          (+ (* 2 ((ht d) (- k 1)))
             ((ht (remainder (+ d 3) 4)) (- k 1))
             ((ht (remainder (+ d 1) 4)) (- k 1)))
          ))))

(let ((f (ht 1))) (f 2))

Java:

public class tile {
 public static int tiles (int d, int k){
 if (k == 0)
 if (d > 0)
 return 0;
 else
 return 1;
 else
 return (2* (tile.tiles (d, (k-1)))) + (tiles (((d + 3) %4), (k -1))) + (tiles (((d + 1) % 4), (k - 1)));
 }
}

Java –> Scheme

22 Maggio 2010 Nessun commento
1 Star2 Stars3 Stars4 Stars5 Stars (Ancora nessun voto)
Loading...

Vediamo ora le differenze tra la programmazione in Scheme e Java; partiamo da una funzione semplice semplice che permette il reverse di una stringa (alfanumerica) e la vedremo nei vari linguaggi di programmazione:
1) In Scheme:

(define revi
(lambda (txt)
(if (= (string-length txt) 0)
txt
(string-append (string (string-ref txt (- (string-length txt) 1))) (revi (substring txt 0 (- (string-length txt) 1))))
)
))

Il concetto di base della funzione è la RICORSIONE, cioè richiamo la stessa funzione fino al termine del caso base.

2) Vediamo la stessa ricorsione in Java:

class rev
{
public static String revi (String parola)
{
int k = parola.length();
if (k < 1)
return parola;
else
{
parola = parola.charAt(k-1) + rev.revi (parola.substring (0, k-1));
}
return parola;
}
}

3) Vediamo la stessa funzione in Java con un ciclo:

class ribalta {
public static String ribalto (String testo) { int rigth ; rigth = testo.length(); StringBuffer dest = new StringBuffer(rigth); for (int index = (rigth -1); index >= 0; index--) dest.append(testo.charAt(index)); return dest.toString(); } }