Difference between revisions of "Esercizi a caso del Prof."
Line 19: | Line 19: | ||
*; La prima versione con due variabili : <syntaxhighlight lang="python"> a='a=%r;b=%r;print a%%(a,b)';b='b=%r;print a%%(a,b)';print a%(a,b) </syntaxhighlight> | *; La prima versione con due variabili : <syntaxhighlight lang="python"> a='a=%r;b=%r;print a%%(a,b)';b='b=%r;print a%%(a,b)';print a%(a,b) </syntaxhighlight> | ||
*; Per capire meglio la logica del format ci siamo sbizzarriti: <syntaxhighlight lang="python"> a = 'a = %r ; b = %r ; c = %r ; print a%%(a,b,c) ' ; b = 'b = %r ; c = %r ; print a%%(a,b,c) ' ; c = 'c = %r ; print a%%(a,b,c) ' ; print a%(a,b,c) </syntaxhighlight> | *; Per capire meglio la logica del format ci siamo sbizzarriti: <syntaxhighlight lang="python"> a = 'a = %r ; b = %r ; c = %r ; print a%%(a,b,c) ' ; b = 'b = %r ; c = %r ; print a%%(a,b,c) ' ; c = 'c = %r ; print a%%(a,b,c) ' ; print a%(a,b,c) </syntaxhighlight> | ||
+ | # %% fuori stringa corrisponde a un solo %. | ||
+ | # a%(a,b,c) corrisponderebbe in C a printf(a,a,b,c). | ||
* [C] beccatevi anche questo (da Alessio G. e Federico A.): | * [C] beccatevi anche questo (da Alessio G. e Federico A.): |
Revision as of 16:54, 31 October 2013
Cominciamo da una sfida:
Il programma che stampa se stesso
scrivere un programma che produca in output se stesso: i.e. non prevede input e l'output deve essere identico al sorgente.
Vince chi produce il programma piu' compatto (in ogni linguaggio).
Però non dovete fare come in questo tentativo. il programma deve stampare se stesso senza leggere il proprio sorgente! (è proprio quella la sfida divertente!, rd 20131027). Per il Pyhton il programma vuoto non vale, è una soluzione banale.
- [Python v3.3.2] Credo che la soluzione piu' compatta sia questa:
- source code
- print(__file__)
- filename
- print(__file__)
- command line
- python "print(__file__)"
- L'istruzione visualizza sul terminale il nome del file sorgente. Il nome del file sorgente coincide con l'istruzione.
- [Python] beccatevi questo (da Federico A. e Alessio G.):
- La prima versione con due variabili
a='a=%r;b=%r;print a%%(a,b)';b='b=%r;print a%%(a,b)';print a%(a,b)
- Per capire meglio la logica del format ci siamo sbizzarriti
a = 'a = %r ; b = %r ; c = %r ; print a%%(a,b,c) ' ; b = 'b = %r ; c = %r ; print a%%(a,b,c) ' ; c = 'c = %r ; print a%%(a,b,c) ' ; print a%(a,b,c)
- %% fuori stringa corrisponde a un solo %.
- a%(a,b,c) corrisponderebbe in C a printf(a,a,b,c).
- [C] beccatevi anche questo (da Alessio G. e Federico A.):
Usando la stessa logica del programma in "pitone" lo abbiamo rielaborato in C:
/*Printf stampa la stringa s e sostituisce ad ogni occorrenza di %c i caratteri ascii corrispondenti ai numeri: 9 = \t , 10 = \n , 34 = \" .
Il %s corrisponde alla stringa.*/
#include <stdio.h>
char s[] = "#include <stdio.h>%c%cchar s[]=%c%s%c;%cvoid main(void){%c%cprintf(s,10,9,34,s,34,10,9,10,9,10);%c%c}%c";
void main(void){
printf(s,10,9,34,s,34,10,10,9,10,9,10);
}
Programmi semplici
riscrivere le funzioni strcpy, strcmp, strncmp etc... (quelle elencate da "man 3 string") in C e in Python.
scrivere una funzione che controlli se una stringa e' palindroma (C python)
Una miniera di esercizi
Rosetta Stone. Tantissimi problemi risolti con tantissimi linguaggi.