Sommario
Implementa FizzBuzz in Python, con il minor numero di token possibili.
Sfida
Scrivi un programma che stampa i numeri decimali da 1 a 100 inclusi. Ma per i multipli di tre stampa "Fizz" invece del numero e per i multipli di cinque stampa "Buzz". Per i numeri multipli di tre e cinque stampare "FizzBuzz". I programmi devono essere scritti in alcune versioni di Python.
Per maggiori dettagli, vedi 1, 2, Fizz, 4, Buzz
punteggio
Il tuo punteggio sarà uguale al numero di nodi nella struttura della sintassi astratta del tuo codice, come riportato da questo programma per Python 3 o da questo programma per Python 2 . Per eseguire i programmi, fornire il nome file del codice come argomento della riga di comando al programma. Per esempio:
python simple_counter.py fizzbuzz.py
Questi programmi sono basati sul modulo ast di Python . Se hai qualche difficoltà, fammi sapere.
Per evitare soluzioni banali, come l'esecuzione di una lunga stringa con il programma reale o la codifica dell'output, ci sono alcune restrizioni aggiuntive:
Nessun token nel codice può contenere più di 15 caratteri. I programmi sopra verificheranno questo requisito per te. Si noti che per facilità di implementazione, i programmi sopra citano i commenti come token.
L'esecuzione / valutazione del codice è vietata.
Se hai domande sul fatto che sia permesso qualcosa, chiedimi.
Euristica del punteggio
Le seguenti regole sono in genere sufficienti per calcolare il punteggio del tuo programma:
Dichiarazioni di blocco sono 1 punti:
if
,for ... in ...
,while
,else
, etc.Dichiarazioni Standalone 1 punto:
print
in Python 2,break
,pass
, etc.Le variabili sono 2 punti
Letterali single-token sono 1 punto:
2131
,"Hello, world!"
,True
Le funzioni sono 3 punti (2 per l'utilizzo di una variabile, 1 extra):
print
in Python 3range
, ecc.Gli operatori sono 2 punti:
+
,*
,%
,and
,not
, etc.=
è 1 puntoAssegnazione Augmented è di 2 punti:
+=
,|=
, etc.Le parentesi, il rientro, ecc. Sono 0 punti.
Una linea contenente un'espressione, al contrario di un compito o un'espressione, è + 1 punto.
Avere del codice è di 1 punto.
Sfida:
Vince il punteggio più basso. In bocca al lupo!