Questito su un ciclo for
Di recente ho trovato un quesito su un ciclo for. Penso che il linguaggio si C++, ma non è specificato.
Lo posto qui, nella sezione informatica, anche se andrebbe probabilmente nei giochi. Non mi torna per niente, soprattutto il fatto di trovare tre risposte. Il quesito è il seguente:
Puzzle: In Three Ways.
Find three ways to make the program below print 20 copies of the dash character '-' by changing or adding one character:
int i, n = 20;
for (i = 0; i < n; i--)
{
printf("-");
}
Incorrect solutions:
Changing "n = 20" to "n = -20" won't work.
Changing "i--" to "i++" doesn't satisfy the one character condition.
Changing "i = 0" to "i = 40" won't work.
Changing "i < n" to "i < -n" won't work.
Potete trovarlo qui: http://www.tanyakhovanova.com/Puzzles/i ... rogramming
Lo posto qui, nella sezione informatica, anche se andrebbe probabilmente nei giochi. Non mi torna per niente, soprattutto il fatto di trovare tre risposte. Il quesito è il seguente:
Puzzle: In Three Ways.
Find three ways to make the program below print 20 copies of the dash character '-' by changing or adding one character:
int i, n = 20;
for (i = 0; i < n; i--)
{
printf("-");
}
Incorrect solutions:
Changing "n = 20" to "n = -20" won't work.
Changing "i--" to "i++" doesn't satisfy the one character condition.
Changing "i = 0" to "i = 40" won't work.
Changing "i < n" to "i < -n" won't work.
Potete trovarlo qui: http://www.tanyakhovanova.com/Puzzles/i ... rogramming
Risposte
"Print 20 copies" oppure "print exactly 20 copies"?
Penso che vada inteso come exactly.
@red3: hai risolto il problema? Può essere sia C che C++, ma non è molto importante[nota]Penso sinceramente che fosse stato ideato per l'ANSI C, quello di K&R per capirci. Infatti nel C++ è raro che la variabile del for sia definita fuori dal for.[/nota].
@red3: hai risolto il problema? Può essere sia C che C++, ma non è molto importante[nota]Penso sinceramente che fosse stato ideato per l'ANSI C, quello di K&R per capirci. Infatti nel C++ è raro che la variabile del for sia definita fuori dal for.[/nota].
"vict85":
Penso che vada inteso come exactly.
@red3: hai risolto il problema? Può essere sia C che C++, ma non è molto importante[nota]Penso sinceramente che fosse stato ideato per l'ANSI C, quello di K&R per capirci. Infatti nel C++ è raro che la variabile del for sia definita fuori dal for.[/nota].
no, per me manca di capire qualcos'altro o a livello di specifiche o di sintassi. comunque esattamente 20 caratteri
Io credo di aver trovato una delle possibili soluzioni.
"Raptorista":
Io credo di aver trovato una delle possibili soluzioni.
Credi? Io ne ho trovata una e penso sia anche l'unica. Non ho provato a risolvere gli altri problemi:
pochmann and SnapDragon from TopCoder suggested entertaining and challenging variations to this problem (using the same restrictions):
Find a way to get it to print exactly 21 dashes.
Find a way to get it to print exactly 1 dash.
Find many ways to print infinitely many dashes.
Find many ways to print 0 dashes.
Print 20 dashes with the given code, without changing it at all, but you are allowed to add some preceding code.
Print 1 dash with the given code, without changing it at all, but you are allowed to add some preceding code.
scusa, e quale sarebbe la tua soluzione?
Ok, ne esistono almeno 2... Quella di stan e questa:
edit: Non mi ero reso conto che il testo diceva che ne esistevano 3.
edit: Non mi ero reso conto che il testo diceva che ne esistevano 3.
@vict intendevo dire che ne ho trovata una, non tre. Non ho guardato gli altri quesiti. La soluzione che ho trovato è la stessa riportata da Stan.
Trovata l'ultima

@vict85 Bella!
@vict nice! Che esercizio perverso XD

Ho trovato anche la/una soluzione per il 21 e una per l'1.
21:
1 (il mio editor formatta automaticamente, quindi fa sembrare che abbia aggiunto più caratteri di quelli che sembrano):
Alcune considerazioni su queste due soluzioni:
21:
1 (il mio editor formatta automaticamente, quindi fa sembrare che abbia aggiunto più caratteri di quelli che sembrano):
Alcune considerazioni su queste due soluzioni: