|
| |
| Autore | Messaggio |
|---|
darkjoker Admin


Numero di messaggi: 813 Data d'iscrizione: 30.07.07
 | Oggetto: sbronza Mar Ott 23, 2007 11:23 am | |
| Forse qualcuno di voi ha già comprato HJ, una rivista che dovrebbe parlare di hacking ma che ormai è in decadenza.. Non è stato sempre così e qualche anno fa alla redazione della rivista c'erano alcune brave persone, come BargtheGnoll, esisteva il CookBook, in cui fornivano alcuni script relativi a problemi che ci ponevano: quesiti matematici (es: calcolare tot numeri primi in Perl, oppure: Calcola la sequenza Fibonacci in QuickBasic) e a volte anche degli indovinelli... e proprio a partire da uno di questi (più precisamente una filastrocca inglese) che mi sono ispirato per questi programma... La filastrocca recita più o meno così: | Citazione: | 99 bottles of beer on the wall, 99 bottles of beer. Take one down and pass it around, 98 bottles of beer on the wall.
98 bottles of beer on the wall, 98 bottles of beer. Take one down and pass it around, 97 bottles of beer on the wall.
97 bottles of beer on the wall, 97 bottles of beer. Take one down and pass it around, 96 bottles of beer on the wall.
etc finchè non arriva a 1: 1 bottle of beer on the wall, 1 bottle of beer. Take one down and pass it around, no more bottles of beer on the wall.
e poi: No more bottles of beer on the wall, no more bottles of beer, Go to the store and buy some more, 99 bottles of beer on the wall
|
se capite bene l'inglese avrete capito che è una bella fregatura...  Ora vi lancio una sfida... (neanche tanto difficile... BlackLight non può partecipare sennò lo banno ) chi mi scrive un programma in qualunque linguaggio (autoit, c, perl, pascal, ruby, brainfuck, python, php,... insomma, qualunque...) che esegua il contenuto della filastrocca...
Se volete vedere la mia soluzione clickate sullo spoiler
| Spoiler: | | | #include <stdio.h> main (){ while (1 == 1){ int bottiglie = 99; while (bottiglie >= 2){ printf ("\n%d bottles of beer on the wall, %d bottles of beer,\nTake one down and pass it around,\n%d bottles of beer on the wall\n", bottiglie, bottiglie, bottiglie - 1); bottiglie = bottiglie - 1; } printf ("\n1 bottle of beer on the wall, 1 bottle of beer.\nTake one down and pass it around,\nno more bottles of beer on the wall.\n"); printf ("\nNo more bottles of beer on the wall\nno more bottles of beer.\nGo to the store and buy some more,\n99 bottles of wine on the wall.\n"); int continua; printf ("\nContinuare la sbronza?\n 0. SI\n 1. NO\n"); scanf ("%d", &continua); if (continua == 1){ break; } } }
|
ma prima, almeno, provateci  buon divertimento..._________________ L'unico computer sicuro, è un computer spento. Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia  |
|  | | BlackLight Moderatore


Numero di messaggi: 277 Età: 25 Data d'iscrizione: 22.08.07
 | Oggetto: Re: sbronza Mar Ott 23, 2007 5:33 pm | |
| Eh eh ok non partecipo...  Ma alla fine nulla di infattibile, basta un ciclo for con i che decresce volta per volta di un valore e un if per controllare se è 0 (in quel caso si resetta a 99), si può fare in qualsiasi linguaggio... _________________ -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/CM/CC/E/IT/LS/M d-(--) s:- a-- C+++$ UBL++++$ P+++ L+++++$ E- W+++ N+ o? K? w-- !O !M>+ !V PS+++ PE-- Y++ PGP+ !t !5 !X R+ tv-- b++>+++ DI? D+ G>+++ e++>++++ h r++ y+++ ------END GEEK CODE BLOCK------ | Codice: | blacklight@nightmare:/$ touch figa touch: cannot touch `figa': Permission denied |
|
|  | | DrA93 apprendista


Numero di messaggi: 64 Età: 101 Localizzazione: Bergamo(parenti salernitani) Data d'iscrizione: 29.08.07
 | Oggetto: Re: sbronza Mar Ott 23, 2007 6:15 pm | |
| | Codice: | $var = 99
While 1=1 if $var = 0 Then MsgBox(16, "PORCA PUTTANA!", "Non ti sembra di aver bevuto troppo?Ti VIETO di andare al negozio a comprare ancora bottiglie di birra!!") ExitLoop ElseIf $var = $var Then msgbox(0, $var, $var&"bottle of beer on the wall, "&$var&" bottles of beer."&@CRLF&"Take one down and pass it around."&@CRLF&$var-1&" Bottles of beer on the wall!!") $var = $var-1 EndIf
WEnd |
DA PROVARE!!(SOPRATTUTTO ARRIVATE A ZERO!!) |
|  | | LordHk Moderatore


Numero di messaggi: 140 Data d'iscrizione: 28.09.07
 | Oggetto: Re: sbronza Mer Ott 24, 2007 10:25 am | |
| Mo sto scappando, oggi pome posto il codice!  @Black mi vedo con Woz XD |
|  | | BlackLight Moderatore


Numero di messaggi: 277 Età: 25 Data d'iscrizione: 22.08.07
 | Oggetto: Re: sbronza Mer Ott 24, 2007 11:18 am | |
| | LordHk ha scritto: | | @Black mi vedo con Woz XD |
Wow fammi poi sapere come va l'incontro  _________________ -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/CM/CC/E/IT/LS/M d-(--) s:- a-- C+++$ UBL++++$ P+++ L+++++$ E- W+++ N+ o? K? w-- !O !M>+ !V PS+++ PE-- Y++ PGP+ !t !5 !X R+ tv-- b++>+++ DI? D+ G>+++ e++>++++ h r++ y+++ ------END GEEK CODE BLOCK------ | Codice: | blacklight@nightmare:/$ touch figa touch: cannot touch `figa': Permission denied |
|
|  | | certaindeath Admin


Numero di messaggi: 343 Data d'iscrizione: 30.07.07
 | Oggetto: Re: sbronza Mer Ott 24, 2007 3:07 pm | |
| @DrA invece che | Citazione: | | ElseIf $var = $var Then |
potevi srivere "Else" |
|  | | darkjoker Admin


Numero di messaggi: 813 Data d'iscrizione: 30.07.07
 | Oggetto: Re: sbronza Mer Ott 24, 2007 3:54 pm | |
| ... bravo black che non ha partecipato... | Citazione: | Eh eh ok non partecipo... Ma alla fine nulla di infattibile, basta un ciclo for con i che decresce volta per volta di un valore e un if per controllare se è 0 (in quel caso si resetta a 99), si può fare in qualsiasi linguaggio...
|
e che invece ha scritto la soluzione a parole...  _________________ L'unico computer sicuro, è un computer spento. Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia  |
|  | | black hole membro


Numero di messaggi: 90 Data d'iscrizione: 03.10.07
 | Oggetto: Re: sbronza Mer Ott 24, 2007 9:01 pm | |
| ma deve essere un loop che si ripete all'infinito o che ad ogni volta che il valore è 0 chiede se si vuole riniziare? |
|  | | DrA93 apprendista


Numero di messaggi: 64 Età: 101 Localizzazione: Bergamo(parenti salernitani) Data d'iscrizione: 29.08.07
 | Oggetto: Re: sbronza Mer Ott 24, 2007 9:32 pm | |
| | Citazione: | @DrA invece che
Citazione:ElseIf $var = $var Then
potevi srivere "Else"
certaindeath Admin
Messaggi : 144 Registrato il : 30/07/07
|
Uhm...sai, l'abitudine,tanto è uguale alla fin fine... |
|  | | BlackLight Moderatore


Numero di messaggi: 277 Età: 25 Data d'iscrizione: 22.08.07
 | Oggetto: Re: sbronza Mer Ott 24, 2007 9:39 pm | |
| @black hole: Semplicemente nel ciclo controlli se la variabile contatore è pari a 0, in quel caso la resetti a 99. _________________ -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/CM/CC/E/IT/LS/M d-(--) s:- a-- C+++$ UBL++++$ P+++ L+++++$ E- W+++ N+ o? K? w-- !O !M>+ !V PS+++ PE-- Y++ PGP+ !t !5 !X R+ tv-- b++>+++ DI? D+ G>+++ e++>++++ h r++ y+++ ------END GEEK CODE BLOCK------ | Codice: | blacklight@nightmare:/$ touch figa touch: cannot touch `figa': Permission denied |
|
|  | | black hole membro


Numero di messaggi: 90 Data d'iscrizione: 03.10.07
 | Oggetto: Re: sbronza Mer Ott 24, 2007 9:53 pm | |
| ah quindi non termina mai...capito |
|  | | black hole membro


Numero di messaggi: 90 Data d'iscrizione: 03.10.07
 | Oggetto: Re: sbronza Mer Ott 24, 2007 10:04 pm | |
| | Codice: | e = raw_input('\nInvia qualcosa per cominiciare la sbronza\n') if e != 'vogliorestaresobrio': z = 1 while z == 1: a = 99 y = ' bottles of beer on the wall,' g = ' bottles of beer.\nTake one down and pass it around,\n' j = ' bottles of beer on the wall.\n' while a != 0: print '\n',a,y,a,g,a - 1,j a = a - 1 if a == 0: print 'No more',y,'no more',j,'Go to the store and buy some more,',a,' bottles of beer on the wall' |
al posto che resettare la variabile a 99 ho fatto che ripetere tutto  |
|  | | darkjoker Admin


Numero di messaggi: 813 Data d'iscrizione: 30.07.07
 | Oggetto: Re: sbronza Gio Ott 25, 2007 4:00 pm | |
| ... carino... magari potresti mettere qualcosa al posto di voglio restare sobrio come un if alla fine del while che chiede se continuare, se no allora metti un break altrimenti continua con il suo loop... insomma, come ho fatto io(in C) ma si dovrebbe poter fare anche in python, no  ? _________________ L'unico computer sicuro, è un computer spento. Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia  |
|  | | black hole membro


Numero di messaggi: 90 Data d'iscrizione: 03.10.07
 | Oggetto: Re: sbronza Gio Ott 25, 2007 7:48 pm | |
| uhm all'inizio l'avevo fatto così..te lo posto tra pochissimo |
|  | | black hole membro


Numero di messaggi: 90 Data d'iscrizione: 03.10.07
 | Oggetto: Re: sbronza Gio Ott 25, 2007 8:08 pm | |
| | Codice: | e = raw_input('\nInvia qualcosa per cominiciare la sbronza\n') if e != 'vogliorestaresobrio': z = 1 while z == 1: a = 99 y = ' bottles of beer on the wall,' g = ' bottles of beer.\nTake one down and pass it around,\n' j = ' bottles of beer on the wall.\n' while a != 0: print '\n',a,y,a,g,a - 1,j a = a - 1 if a == 0: print 'No more' + y + 'no more' + j b = raw_input('\nAltra birra?\n.SI\n.NO\n\n') if b == 'SI': print '\nGo to the store and buy some more,',a,' bottles of beer on the wall' elif b == 'NO': print "\nFine sbronza" break else: print 'Già ubriaco?!\nPuoi scrivere solo SI o NO!!\nFine sbronza' break |
decidete voi se lasciare o meno voglio restare sobrio |
|  | | darkjoker Admin


Numero di messaggi: 813 Data d'iscrizione: 30.07.07
 | Oggetto: Re: sbronza Ven Ott 26, 2007 4:11 pm | |
| carino... poi con quel | Codice: | print 'Già ubriaco?!\nPuoi scrivere solo SI o NO!!\nFine sbronza'
|
c'ha un pizzico di classe:D !_________________ L'unico computer sicuro, è un computer spento. Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia  |
|  | | darkphantom hack-member


Numero di messaggi: 398 Data d'iscrizione: 03.09.07
 | Oggetto: Re: sbronza Dom Ott 28, 2007 3:56 pm | |
| ecco il mio codice | Codice: | a=99 b=1 while b==1: if a>1: print a,"bottles of beer on the wall,",a,"bottles of beer.Take one down and pass it around,",a-1,"bottles of beer on the wall.\n" a-=1 elif a==1: print a,"bottle of beer on the wall,",a,"bottle of beer.Take one down and pass it around,",a-1,"bottles of beer on the wall.\n" a-=1 else: b=input("e finita la birra. comprarne altra?\n 1=si\n 0=no\n") if b==1: a=99
|
unico problema: non si legge niente |
|  | | darkphantom hack-member


Numero di messaggi: 398 Data d'iscrizione: 03.09.07
 | Oggetto: Re: sbronza Lun Ott 29, 2007 1:30 pm | |
| ecco il mio codice, questa volta in C: | Codice: | #include<stdio.h> main() { int a,b; a=1; b=99; while (a==1) {if (b>1) {printf("%d bottles of beer on the wall, %d bottles of beer.take one down and pass it around.%d botttles of beer on the wall\n",b,b,b-1); b-=1;} else {printf("non c'è più birra. comprarne altra?\n 1=sì\n 0=no\n"); scanf("%d",&a); if (a==1) b=99; } } }
|
ok, non sarà il massimo, però per me, fino a pochi giorni fa, C era solo una lettara dell'alfabeto... ah, dimenticavo: alcuni caratteri, tipo"ì",per il C non esistono, quindi li sostituisce con cose strane... c'è un modo per togliere questo bug? @blackhole: se vuoi un consiglio, prima di far chiudere brutalmente il programma, metti una input, qualcosa tipo
| Codice: | print 'Già ubriaco?!\nPuoi scrivere solo SI o NO!!\nFine sbronza' input("") break
|
non serve a niente, ma dà il tempo di leggere, poichè aspetta che venga inserito qualcosa, ma non si disturba a leggere cosa hai inserito |
|  | | certaindeath Admin


Numero di messaggi: 343 Data d'iscrizione: 30.07.07
 | Oggetto: Re: sbronza Lun Ott 29, 2007 4:22 pm | |
| accidenti darkphantom da quand'è che cominci a postare lo stesso programma in tanti linguaggi?????? mi stai diventando come blacklight!! |
|  | | black hole membro


Numero di messaggi: 90 Data d'iscrizione: 03.10.07
 | Oggetto: Re: sbronza Mar Ott 30, 2007 3:50 pm | |
| grazie per il consiglio...lo terrò a mente per i prossimi programmi.. |
|  | | |
| | Permesso del forum: | Non puoi rispondere agli argomenti in questo forum
| |
| |
| |