Newsgroup: it.comp.programmare
Titolo: La routine più difficile...

Secondo vuoi quale è la routine più difficile da realizzare?
Dalla mia poca esperienza da programmatore(2 anni), credo che si quella che
calcola dei numeri Random tra un intervallo passato!
A tal proposito, esistono dei codici sorgenti (Java, C,C++) da poter vedere?
Più che altro è una curiosità,
grazie

 Secondo vuoi quale è la routine più difficile da realizzare?
La prossima.
-- 
Valter Minute
vmi...@inwind.it
 (the reply address of this message is invalid)

 vedere? Più che altro è una curiosità,
il problema della generazione di numeri (pseudo)casuali e` piu` che altro 
di natura matematica che non informatica: per una discussione esauriente 
sui vari algoritmi relativi a questo argomento il riferimento classico 
e`:
D.Knuth, "The Art of Computer Programming", Volume 2: "Seminumerical 
algorithms"
Cmq se, come mi sembra di capire, ti interessa anche l'aspetto pratico 
piu` che quello teorico allora cerca in rete "Numerical Recipes", che 
fornisce esempi in C.
ciao Anto
-- 
Antonio Cuni, 20 anni, studente
Brainbench C++ Master: 4.73, higher than 99% of all previous test takers.
C Language: 3.79, higher than 92% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 Secondo vuoi quale è la routine più difficile da realizzare?
quella che stampa se stessa ;-)
ciao
luca

 quella che stampa se stessa ;-)
// rimettere assieme la riga spezzata dal newreader...
#define PRINT(x) (x, printf("PRINT(%s);\n}\n", #x))
void print() {
PRINT(printf("#define PRINT(x) (x, printf(\"PRINT(%%s);\\n}\\n\", 
#x))\nvoid print() {\n"));


 }
Questa e` piu` bella:
char *p="char *p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
Ovviamente tutto su una riga...
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscali.it

 On Tue, 02 Jul 2002 13:50:48 +0200, Antonio Cuni wrote:
OK tutti e due...
ma allora, dato un linguaggio L, qual'e' la piu' breve routine che
stampa se stessa ?
ciao
Luca

 Secondo vuoi quale è la routine più difficile da realizzare?
Questa non è difficile, ma è bellina:
------------------------
/*
Probabilmente mistery2 funziona solo se compilato con MS Visual Studio 6.0
in quanto sfrutta la particolare
implementazione del compilatore.
Testato su Windows 98, 98SE, NT. Non funziona su Windows NT.
Caratteristiche principali:
- semplice checksum
- codice automodificante (SMC) (funziona solo su processori INTEL!)
- codifica concatenata (una qualsiasi modifica locale si riflette
sull'intero codice)
- momentanea sospensione del multitasking di Windows (ogni CRASH inchioda
l'intero s. operativo)
- perturbazione dello stack (rende impossibile lo stepping tramite debugger
(RING 3))
NB: mistery2 non danneggia intenzionalmente il sistema operativo o
l'hardware, comunque, se modificato o
 debuggato, il suo comportamento è indefinito.
*/
#include <stdio.h>
#pragma const_seg(".data")
typedef (____)();void
main(_,__,___)____*__;{_-_/_?__():main(fputchar,"\x60\x9C\xFA\xE8\x00\x00\x0
0\x00\
\x5E\xE9\xA3\x00\x00\x00\xC6\x25\x00\x00\x00\xB9\x20\x00\x00\x00\x2B\xE2\x8B
\x44\x34\xD9\x33\x44\x34\xDD\x89\
\x06\x83\xC6\x04\x90\x03\xE2\x49\x75\xEB\x66\x77\x3f\xa9\xed\x02\x37\x39\x05
\x02\x37\x39\x05\x5d\x1c\xdb\x88\
\x01\x20\xd9\x31\x4e\x20\xd9\x31\x7d\xe0\x53\x75\x61\x39\x50\x97\x30\x6b\x00
\x68\xe6\xe8\xc4\x6c\xbc\xb1\xef\
\x8e\xff\xf8\x9a\x66\xfc\x1a\x07\x07\x3f\x57\x4e\x54\x6b\x12\x1c\x0d\x59\x33
\x3d\x2c\x54\x39\x30\x26\x04\x5c\
\x5e\x55\x65\x28\x3b\x75\x01\x41\x1b\x10\x72\x32\x7e\x62\x17\x12\x17\x0c\x37
\x75\x65\x6d\x53\x1a\x45\x09\x3a\
\x3a\x28\x66\x5e\x53\x4e\x0f\x3d\x32\x3c\x6a\x1d\x43\x49\x0f\x6e\x37\x26\x2f
\x03\x52\x55\x5c\x62\x35\x32\x35\
\x0d\x0a\x0d\x0a\x00\x00\x00\x8D\x54\x24\xD9\x83\xC6\x25\xB9\x20\x00\x00\x00
\x33\xC0\x2B\xE2\x03\x44\x34\xD9\
\x83\xC6\x04\x03\xE2\x49\x75\xF2\x81\xEE\xA5\x00\x00\x00\x83\xC6\x25\x3D\x41
\x81\x79\x27\x0F\x84\x32\xFF\xFF\
\xFF\xEB\xFE",0);}
// by Kiuhnm
------------------------
Ciao, Kiuhnm

 *p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
pero` non e` portabile :-))


 stampa se stessa ?
semplice: definiamo un nuovo linguaggio AC (il nome deriva dalle iniziali 
del suo inventore ;-). Questo nuovo linguaggio ha una sola funzione: P.
L'effetto della funzione P e` di stampare una lettera "P" su video.
Detto questo ecco la piu` breve funzione autoreferenziale che sono 
riuscito ad immaginare :-):
[anto@localhost tmp]$ cat 
print_self.ac
P


 pero` non e` portabile :-))
Per i '34' nelle printf che presuppongono l'ASCII come codifica, vero? Lo
so, lo so... pero` e` bella perche` brevissima. Cmq, non e` opera mia, ci
tengo a dirlo, l'ho pescata da qualche parte nella rete... forse sul sito
di "Obfuscated C" o qualcosa del genere.


 semplice: definiamo un nuovo linguaggio AC (il nome deriva dalle iniziali 
ho detto: "dato un linguaggio L"  ;-)
non puoi scegliertelo a piacere !! :-)
ciao 
luca

 non puoi scegliertelo a piacere !! :-)
hai ragione, ho barato; allora ti dimostro che non sempre esiste una 
routine in grado di scrivere se stessa: definiamo un linguaggio AC che 
ha una unica funzione P: l'effetto di P e` di stampare PP in output...
;-)
