venerdì 20 febbraio 2015

Codice Golf: di Fibonacci Sequence Part Deux

La zona degli oggetti è presentato da WSO2 . Scarica un'architettura di riferimento per l'Internet degli oggetti per saperne di più sul lato server e un'architettura cloud necessarie per intereact con e gestire i dispositivi dell'Internet degli oggetti.
Quando si tratta di ingenuità, Codice golf è la cosa che preferisco in assoluto nello spazio di sviluppo. Codice Golf, come il gioco del golf, è un esercizio di brevità - minor numero di righe di codice e la più piccola è la dimensione del file, meglio è. Si richiede creatività, la conoscenza del vostro mestiere, e la perseveranza.

Quindi, al fine di mostrare i membri più brillanti della nostra comunità, DZone terrà un concorso settimanale codice Golf.

Cosa c'è in esso per voi? Il vincitore ogni settimana riceverà qualche DZone malloppo incredibile!

Basta chiedere a Milano Pavlović, il vincitore della scorsa settimana!
Per inviare la tua voce, è necessario lasciare un commento con il vostro codice (utilizzando la funzione di codice), così come quello che il linguaggio è stato utilizzato. Il codice deve essere completamente autonomo (non riferimento codice esterno al tuo!)

Quindi, cominciamo! sfida di questa settimana:


Avrai bisogno di sequenza di uscita di Fibonacci al fattore 30. L'output dovrebbe essere simile a questo:

Visualizza sorgentestampare ?
1.
1: 1
2.
2: 1
3.
3: 2
4.
...
5.
30: 832.040
L'output deve includere tutti i 30 numeri (1-30 e il loro numero di Fibonacci equivalente).
Il trucco? Non è possibile utilizzare tutti i numeri nel codice!
Il codice con i caratteri minor numero (esclusi gli spazi) sarà il vincitore! È necessario inviare il codice da Martedì, Febbraio 24. Il vincitore sarà annunciato nella nostra newsletter!
Suono come qualcosa che si può gestire? Ci piacerebbe vederti provare.

Felice di codifica!

Tags: C & C ++ Codice Golf Codice Puzzler Pitone Javascript Flex & AIR PHP SQL ColdFusion Groovy Rubino Lingue
La zona degli oggetti è presentato da WSO2 . La loro piattaforma enterprise è una piattaforma open-source completamente modulare che fornisce tutte le funzionalità necessarie per il lato server di un'architettura degli oggetti.
Commenti

John Lang ha risposto il Mer, 2015/02/18 - 07:27
E che ha vinto la scorsa settimana ???

Entra o registrati per inviare commenti

Michael Benzinger ha risposto il Mer, 2015/02/18 - 07:32
Ecco uno in Java con nessun numero nel codice:



Visualizza sorgentestampare ?
01.
int i, a, b, t;
. 02
i = a = b = '!' - '' ;
03.
System.out.println ( "" + i + ":" + a);
04.
System.out.println ( "" + ++ i + ":" + b);
. 05
mentre (i ++ =! '>' - '' ) {
. 06
t = b;
. 07
b = a + b;
08.
a = t;
09.
System.out.println ( "" + i + ":" + b);
10.
}
Entra o registrati per inviare commenti

Agustin Martin ha risposto il Mer, 2015/02/18 - 08:13
Ecco in Groovy, ~ 67 caratteri non di spaziatura, contate con

tr -d '[: space:]' <src / main / Groovy / fib.groovy | wc -c
e il codice:

Visualizza sorgentestampare ?
01.
t = ( int ) ''
. 02
b = t - --t
03.
a = b - b
04.
c = b
05.
for (i = b; i <t; i ++) {
. 06
println i + ":" + c
07.
c = a + b
08.
a = b
09.
b = c
10.
}
In realtà posso radere un paio di caratteri nella prima riga (che è ~ 65 caratteri), mi dispiace:

Visualizza sorgentestampare ?
01.
int t = ''
. 02
b = t - --t
03.
a = b - b
04.
c = b
05.
for (i = b; i <t; i ++) {
. 06
println i + ":" + c
07.
c = a + b
08.
a = b
09.
b = c
10.
}
Entra o registrati per inviare commenti

Edo Kan ha risposto il Mer, 2015/02/18 - 09:23
32 caratteri a GLF-script. GLF-script è un linguaggio esoterico molto molto stupido per il codice di golf. interprete non Complety lavorando al momento, ma seguente script funziona senza problemi.

[++ <'' -!, I, i ;;, + k, jk]> i + ':' + k
poiché non è ancora pubblico, codice può bisogno di  una piccola spiegazione po '
[] È utilizzato per "per". assegna automaticamente i nomi delle variabili che iniziano con i
in parte inizializzazione "a", si può anche fornire condizioni.
'' Viene usato per le stringhe. è una stringa termina con! allora stringa viene sostituita con il codice ascii del primo carattere ''! diventa 32
> Viene utilizzato per la stampa
codice è approssimativamente uguale a seguire javascript
vista origine stampa ? . 1 per ( var i = 1, j = i, k = i; i <32 - 1; i ++, j + = k, k = jk) . 2   console.log (i + ':' + k );

PS: Questo non è una voce dal GLF-script non è pubblico e / o pronto a tutto

Entra o registrati per inviare commenti

Stuart Stephen rispose il Gio, 2015/02/19 - 03:49
Java:

Visualizza sorgentestampare ?
01.
pubblico class F {
. 02
int z = ( int ) '' , a = z / z, b = a + a;
03.

04.
F () {
. 05
per ( int i = a; i <= z - b;)
. 06
System.out.println (i + ":" + f (i ++));
07.
}
08.

09.
int f ( int n) {
10.
ritornare n <b? n: f (n - a) + f (n - b);
11.
}
12.

13.
pubblici statici vuoti principali (String [] args) {
14.
nuovo F ();
15.
}
16.
}
Entra o registrati per inviare commenti

Liz Lyon risposto il Mer, 2015/02/18 - 12:32
JavaScript:



var b = + true, s = [bb, b], i, c = b + b + b + b + b;
for (i = b; i <(b << c) -b; i ++) {
  if ( i> b) s [i] = s [i- (b + b)] + s [ib];
  console.log (i, ':', s [i]);
}
Entra o registrati per inviare commenti

Johan Walters ha risposto il Mer, 2015/02/18 - 10:58
 106 caratteri non-bianchi in stile funzionale, con Scala:

val f: Flusso [Int] = ('' - '') # :: f.scanLeft ('' / '') (_ + _)
per {
  (a, b) ← f.zipWithIndex prendere (- '?' '') coda
} println (b + ":" + a)
Entra o registrati per inviare commenti

John Walter rispose il Mer, 2015/02/18 - 10:53 in risposta a: John Lang
Milano Pavlović è stato il nostro vincitore!

Entra o registrati per inviare commenti

DC Petty ha risposto il Mer, 2015/02/18 - 12:33
74 in Python (di cui quattro spazi sintattica):

Visualizza sorgentestampare ?
. 1
e = int (); f = - ~ e; t = f + f
2.
per i a gamma ((t << t << t) - t): stampa ( - ~ i, ':' , f), e, f = f, e + f
Questo è Python 3 ... Python 2 ha un carattere meno (aggiungere uno spazio dopo stampa e togliere le parentesi dopo stampa).

Entra o registrati per inviare commenti

John Burgoon risposto il Mer, 2015/02/18 - 12:12
 Ecco un modo per farlo in Perl che non vincerà, ma mi ha fatto ridere esilarante

F;
$ m = "Liber Abaci, Leonardo di Pisa \ n";
print $ m;
$ x = $ # F;
la mia ($ a, $ b) = (Lunghezza ($ m) - Lunghezza ($ m), Lunghezza ($ m) / Lunghezza ($ m)),
per il mio $ k ($ x .. Lunghezza ($ m)) {
  $ x = k $ - $ x;
  if ($ k> $ x) {
  ($ a , $ b) = ($ b, $ a + $ b);
  print "$ k: $ b \ n";
  } elsif ($ k = $ x) {
  print "$ k: $ b \ n";
  }
}

Entra o registrati per inviare commenti

Andrej Hosna risposto il Gio, 2015/02/19 - 05:57
La mia opinione su questo in Ruby:

vista origine stampa ? 1. o = (s = '' .ord) / s; a = [o ^ o, o] 2. o.upto (sb = o + o) {| x | print x, ':' , (a << un [-b] + una [-o]) [- b], "\ n" }
wc -c fib.rb => 85

python vince ancora ... Rubists comuni. Sono riuscito a radersi 10 più ora è il (75 ancora perdere da 1 contro python)

Visualizza sorgentestampare ?
. 1
l = o = (s = '' .ord) / s; p = o ^ o
. 2
o.upto (soo) {| x | n = l + p; print x, ':' , p = l, "\ n" ; l = n}
Blog entry

Entra o registrati per inviare commenti

Roberto Griffa ha risposto il Mer, 2015/02/18 - 12:25
Java, 85 caratteri

Visualizza sorgentestampare ?
. 1
int i = '' - '' , a = i, b = ++ i, t;
. 2
mentre (i < '?' - '' ) {
. 3
System.out.println (i ++ + ":" + b);
. 4
t = b;
. 5
b = a + b;
6.
a = t;
7.
}

Entra o registrati per inviare commenti

Milano Pavlović risposto il Mer, 2015/02/18 - 13:29
Ruby, 54 caratteri:

Visualizza sorgentestampare ?
1.
k = "" .size
2.
a = kk
3.
b = k / k
4.
per n in b..k
. 5
stampa n, "\ t: \ t"
6.
pa = b + b = a
7.
end
Entra o registrati per inviare commenti

Milano Pavlović risposto il Mer, 2015/02/18 - 04:49 in risposta a: Milano Pavlović
In realtà ho potuto sbarazzarsi delle schede, non sono in sfida di questa settimana.

Ruby, 50 caratteri:

Visualizza sorgentestampare ?
1.
k = "" .size
2.
a = kk
3.
b = k / k
4.
per n in b..k
. 5
stampa n, ":"
6.
pa = b + b = a
7.
end
Entra o registrati per inviare commenti

Larry Ashley ha risposto il Mer, 2015/02/18 - 22:18
Chiarimenti piacimento.

1. Qual è stata la presentazione vincente per "Codice Golf: Sequenza di Fibonacci"? Penso che chiunque è entrato questo concorso vorrebbe vedere il codice vincente con commento e conteggio dei caratteri.

2. Quali sono le regole complete per i tuoi contest?
A. Quando fa una persona a presentare la sua sottomissione? (È questo il posto? Ci sono altri posti?)
B. È "lasciare un commento con il vostro codice" riguardare commenti simili ai commenti che sto ora facendo?
C. Che cosa significa "utilizzando la funzione di codice" significa?
D. Significa "ciò che il linguaggio è stato utilizzato" implica alcun linguaggio di programmazione legittimo? (In caso contrario, come su un elenco completo di tutti i linguaggi di programmazione validi e dialetti.)
E. Ha "[Y] la nostra produzione dovrebbe essere simile a questo" significa che un personaggio 'due punti' deve comparire tra il numero cardinale e il suo numero di Fibonacci equivalente?

Perdonate la mia ignoranza; Sono solo un programmatore.

Entra o registrati per inviare commenti

Johan Walters ha risposto il Gio, 2015/02/19 - 05:57 in risposta a: Johan Walters
Sono riuscito a radersi alcuni più caratteri:

Visualizza sorgentestampare ?
. 1
val f: Flusso [Int] = ( '' - '' ) # :: f.scanLeft ( ''   / '' ) (_ + _)
2.
per (b ← '' / '' per '>' - '' ) println (B + ":" + f (b))
Ora è 88.



); (Non ci sono regole sul numero di ripresentazione, ci sono-)

Entra o registrati per inviare commenti

Andrej Hosna risposto il Gio, 2015/02/19 - 05:55 in risposta a: Milano Pavlović
E '96 compresi gli spazi si può risparmiare un po' facendo k = "" .ord e sottraendo due later.Nice

Entra o registrati per inviare commenti

Andrej Hosna risposto il Gio, 2015/02/19 - 06:02
Sono riuscito a farlo a 70 da questo trucco

Visualizza sorgentestampare ?
. 1
b = o = (e = '' .ord) / s; a = o ^ o
. 2
o.upto (soo) {| x | print x, ':' , a = b + b = a, "\ n" }
Entra o registrati per inviare commenti

Andrej Hosna risposto il Gio, 2015/02/19 - 06:07 in risposta a: Andrej Hosna
Radersi uno più rimuovendo spazio dopo | x | = totale 69. Yay!

Visualizza sorgentestampare ?
. 1
b = o = (e = '' .ord) / s; a = o ^ o
. 2
o.upto (soo) {| x | print x, ':' , a = b + b = a, "\ n" }
Entra o registrati per inviare commenti

Andrej Hosna risposto il Gio, 2015/02/19 - 06:09 in risposta a: Andrej Hosna
Il mio male ... ho pensato che è compreso gli spazi.

Entra o registrati per inviare commenti

Johan Walters ha risposto il Gio, 2015/02/19 - 07:40 in risposta a: Johan Walters
Infine, Scala in stile mutevole:

Visualizza sorgentestampare ?
. 1
var z, a, t = '' - ''
2.
var b = '' / ''
. 3
per (i ← b a '>' - '' ) {
. 4
println (i + ":" + b)
5.
t = b
6.
b = a + b
7.
a = t
8.
}
69 caratteri.



Entra o registrati per inviare commenti

John Burgoon risposto il Gio, 2015/02/19 - 09:32 in risposta a: Larry Ashley
 Sei sicuro di non essere un avvocato?

Entra o registrati per inviare commenti

John Burgoon risposto il Gio, 2015/02/19 - 09:43 in risposta a: Edo Kan
 lol Edo Kan! Ecco PicardScript, 9 caratteri: MakeItSo - compilatore non funziona ancora, ma ci vuole programmatore intento e lo esegue. Mettendo a fuoco i propri pensieri sulla successione di Fibonacci, mentre la compilazione, funzionerà. Davvero.

Entra o registrati per inviare commenti

John Walter rispose il Gio, 2015/02/19 - 10:21 in risposta a: Larry Ashley
1. Il codice vincente sarà evidenziata nell'articolo di quella settimana. È anche possibile vedere nella newsletter settimanale.

2. Quali sono le regole complete per i tuoi contest?
A. Invia il tuo codice lasciando un commento.
B. Sì.
C. All'interno della casella di commento, l'icona in alto a destra è un editor di codice.
D. È possibile utilizzare qualsiasi linguaggio di programmazione legittima, verificabile.
E. L'output deve visualizzare il numero cardinale e il suo numero di Fibonacci equivalente. I due punti non è necessaria.

Speranza che cancella le cose.

Entra o registrati per inviare commenti

Agustin Martin ha risposto il Gio, 2015/02/19 - 11:55 in risposta a: John Walter
Mmm, se i due punti non è necessario, credo che tutti i messaggi precedenti potrebbe essere migliorata rimozione (che è un carattere non-spazi extra).

[Tutti considerare * fisso * al fine di prevenire una nuova pubblicazione di tutti];-)

Entra o registrati per inviare commenti

DC Petty ha risposto il Gio, 2015/02/19 - 12:13 in risposta a: DC Petty
Per me, per questo contenuto ad essere onesti, è necessario includere spazi bianchi sintattica nel conteggio. Ad esempio, se a capo devono essere utilizzati come separatori dichiarazione, è necessario includerli. Se è necessario spazio bianco per il codice per compilare o eseguire, quindi includere nel conteggio!

Pertanto, questa versione della soluzioneAugustin Martin Groovy dispone di 73 caratteri sintatticamente significativi:

Visualizza sorgentestampare ?
1.
int t = '' ; b = t --- t; a = bb; for (i = b; i <t; i ++) { println i + ":" + b, c = b; b = a + b ; a = c}
Se uso il Unicode-spazio-uguale-32 trick, la mia soluzione Python-2 ha 72:

Visualizza sorgentestampare ?
. 1
e = int (); f = - ~ e; t = f + f
2.
per i in range (ord ( '' ) - t): print - ~ i, ':' , f, e, f = f, e + f
E la soluzioneMilan Pavlović Ruby ha 73:

Visualizza sorgentestampare ?
. 1
k = "" .size; a = kk; b = k / k, per n in b..k, stampa n, ":" ; pa = b + b = a; end


Entra o registrati per inviare commenti

DC Petty ha risposto il Gio, 2015/02/19 - 12:35 in risposta a: DC Petty
E la soluzioneJohan Walters Scala (che non include il cruft necessaria per fare un programma completo Scala) ha 85:

Visualizza sorgentestampare ?
. 1
z var, un, t = '' - '' ; var b = '' / '' , per (i ← b a '>' - '' ) {println (i + ":" + b); t = b, b = a + b; a = t;}
Ma sembra che la soluzioneAndrej Hosna Ruby è minimo con 67:

Visualizza sorgentestampare ?
. 1
b = o = (s = '' .ord) /s;a=o^o;o.upto (soo) {| x | x stampa, ':' , a = b + b = a, "\ n " }
Good one!

Entra o registrati per inviare commenti

Andrej Hosna risposto il Gio, 2015/02/19 - 12:39 in risposta a: DC Petty
Il mio ha 64 caratteri compresi gli spazi. Sono d'accordo che significativi spazi deve essere conteggiato in.

Visualizza sorgentestampare ?
. 1
s = '' .ord; a = s ^ s B = s / s
. 2
b.upto (SBB) {| x | print x, ':' ; pa = b + b = a}
Entra o registrati per inviare commenti

John Burgoon risposto il Gio, 2015/02/19 - 13:03 in risposta a: DC Petty
 Sono d'accordo. Ho usato una frase nella mia presentazione b / c, ovviamente utilizzando una stringa di spazio bianco è una schivata. Inoltre, per questo approccio, perché non inviare un messaggio di divertimento? Tutte le soluzioni davvero intelligenti, però, molto divertente!

Entra o registrati per inviare commenti

Agustin Martin ha risposto il Gio, 2015/02/19 - 01:04
Da quando ho iniziato ad usare Groovy per questa sfida, sto imparando lungo.

Sono riuscito a radere un altro paio di caratteri mutuatari un breve ciclo for ho visto nella trasmissione, rubino (fino a ~ 63 tra cui l'extra ":"):

Visualizza sorgentestampare ?
01.
int t = ''
. 02
b = t - --t
03.
a = b - b
04.
c = b
05.
(i in b ..-- t) {
. 06
println i + ":" + c
07.
c = a + b
08.
a = b
09.
b = c
10.
}
Entra o registrati per inviare commenti

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.