darth_revan Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Ορίστε και χωρίς αναδρομή: > #include <stdio.h> int main() { double x; double y=1; for(x=1; x<=100; x++) { y=y*x; } printf("%f",y); return 0; }
parsifal Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Σύγκρινες το αποτελέσμα που δίνει το παραπάνω, με το αποτέλεσμα που δίνει ο Krokodilos; Είναι πολύ μεγάλη η προσέγγιση που γίνεται, με τον τρόπο που υπολογίζεις το αποτέλεσμα.
darth_revan Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Σύγκρινες το αποτελέσμα που δίνει το παραπάνω, με το αποτέλεσμα που δίνει ο Krokodilos; Είναι πολύ μεγάλη η προσέγγιση που γίνεται, με τον τρόπο που υπολογίζεις το αποτέλεσμα. ok got it :cool:
worldcitizen Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 #include <stdio.h>int main() { double p=1; int i=100; while(i>1) p=p*(i--); printf("%f",p); } Άλλος ένα τρόπος...
parsifal Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Ο μόνος τρόπος που έχω προς το παρόν στο μυαλό μου είναι κάτι σαν το παρακάτω: >#include <stdio.h> #include <string.h> int main(void) { char a[200] = "001", b[200]; int i, j, k, c, d; for(i = 99; i > 1; i--) { strcpy(b, a); for(j = 0; j < i; j++) { c = 0; for(k = 0; a[k]; k++) { d = a[k] + b[k] - 2 * '0' + c; c = d / 10; a[k] = (d % 10) + '0'; } if(c) { a[k] = '1'; a[k+1] = '\0'; } } } printf("%s\n", a); return 0; } το οποίο θέλει λίγη δουλίτσα, και γιατί είναι buggy και γιατί θα τυπώνει το αποτέλεσμα ανάποδα αν διορθωθούν τα bugs και γιατί ήδη περνάει το όριο χαρακτήρων του quiz κλπ κλπ...
Billman Δημοσ. 17 Ιουνίου 2008 Δημοσ. 17 Ιουνίου 2008 Δυστυχώς δεν πετυχαίνει τον στόχο των 130 χαρακτήρων (γύρω στους 205 χωρίς κενά νομίζω), but here goes: > #include <stdio.h> #define F for(i=0;i<158;++i) char a[159], b[159]; int main() { int i, k, j = 99, c = 0; F a[i] = 48; a[i] = 0; a[i-3] = 49; while (k = j--) { F b[i]=a[i]; while (--k) for (i = 157; i >= 0; i--) if (c = (a[i] += b[i] + c - 48) > 57 ? 1 : 0) a[i]-= 10; } printf("%s", a); } Δεν ξέχασα το return 0; Τους πίνακες τους άφησα από έξω μιας και το visual studio μου χτύπαγε run time error Oo Όποιος βρει την λύση με τους 130 χαρακτήρες (ή λιγότερους), plix post it.
ippo00 Δημοσ. 17 Ιουνίου 2008 Δημοσ. 17 Ιουνίου 2008 Κάτι τέτοιο ψάχνουμε ρε παιδιά; > #include <stdio.h> int p[159],i,z=101,k; main() { *p=1; while(--z) for(i=0;i<158;i++) { p[i]*=z; p[i]+=k; k=p[i]/10; p[i]%=10; } while(i--) printf("%d",p[i]); } edit: Τρέχει χωρίς warning σε gcc.
Krokodilos Δημοσ. 18 Ιουνίου 2008 Μέλος Δημοσ. 18 Ιουνίου 2008 Κάτι τέτοιο ψάχνουμε ρε παιδιά; > #include <stdio.h> int p[159],i,z=101,k; main() { *p=1; while(--z) for(i=0;i<158;i++) { p[i]*=z; p[i]+=k; k=p[i]/10; p[i]%=10; } while(i--) printf("%d",p[i]); } Σωστος! Ο κωδικας σου ειναι 126 χαρακτηρες. Το quiz αυτο μου ηρθε στο μυαλο συμμετεχοντας σε μια απο τις συζητησεις οπου μεταξυ αλλων ηταν και ενας αληθινος μαγος του προγραμματισμου! Το ονομα αυτου H.G Muller, ενας Ολλανδος που κατεχει το ρεκορ του πιο μικρου προγραμματος Σκακιου στον κοσμο με μολις 2000 χαρακτηρες κωδικα!! Το περιφημο Micro-Max! Βασικα δεν ειναι μονο το πιο μικρο, αλλα και το πιο δυνατο σε σχεση με το μεγεθος του(μολις 2 kB) προγραμμα που παιζει σκακι. Περιπου 2000-2100 ΕΛΟ. Η πιο μικρη αλλα πιο αδυναμη εκδοση του εχει μολις 1180 χαρακτηρες! Και παιζει αρκετα δυνατο Σκακι, τοσο ωστε να νικαει τους περισσοτερους αρχαριους. Τελοσπαντων οσον αφορα το παρων quiz: Οταν του εδωσα πριν λιγο την λυση του ippo00 η αντιδραση του ηταν: "I can improve on his code:" > #include <stdio.h> int p[159]={1},i,z=101,k,q; main() { while(--z) for(i=0;i<158;i++) q=p[i]*z+k, k=q/10, p[i]=q%10; while(i--) printf("%d",p[i]); } Οποτε ο κωδικας του ippo00 γινεται 118 χαρακτηρων. "This saves 8 characters, and thus makes his code smaller than mine. But I have an objection against this code, which is that it does not print a linefeed at the end. If this is allowed, I can shorten my code too." Στο σημειο αυτο εχω μια απορια. Τι θα πει δεν τυπωνει μια linefeed στο τελος? Η λυση που αρχικα εδωσε αυτος τοτε στην συζητηση ηταν: > #include <stdio.h> main() { int i=101,j,k,A[99]={1}; while(--i) for(j=k=0;j<80;j++) k=i*A[j]+k/100,A[j]=k%100,i-1?0:printf(j-79?"%02d":"\n",A[78-j]); } 125 χαρακτηρες! Αλλα οπως ειπε: "But I have an objection against this code, which is that it does not print a linefeed at the end. If this is allowed, I can shorten my code too:" Και εδωσε την βελτιωμενη κατα 10 χαρακτηρες εκδοση: > #include <stdio.h> main() { int i=101,j,k,A[99]={1}; while(--i) for(j=k=0;j<79;j++) k=i*A[j]+k/100,A[j]=k%100,i-1?0:printf("%02d",A[78-j]); } 115 χαρακτηρες!
parsifal Δημοσ. 18 Ιουνίου 2008 Δημοσ. 18 Ιουνίου 2008 "Linefeed at the end": O χαρακτήρας αλλαγής γραμμής "\n". Καλά το μυρίστηκα ότι θα κατέληγε σε αποτελέσματα που θυμίζουν "Obfuscation code contest"!
ippo00 Δημοσ. 18 Ιουνίου 2008 Δημοσ. 18 Ιουνίου 2008 Πάντως είναι ωραίο να βλέπες ενα θέμα πέρα από το <<Λύσε μου την άσκηση..>>
Krokodilos Δημοσ. 18 Ιουνίου 2008 Μέλος Δημοσ. 18 Ιουνίου 2008 "Linefeed at the end": O χαρακτήρας αλλαγής γραμμής "\n". Α ναι ηταν προφανες, αφου εβγαλε το \n απο τον αρχικο κωδικα.... Καλά το μυρίστηκα ότι θα κατέληγε σε αποτελέσματα που θυμίζουν "Obfuscation code contest"! LOL. Ενω τον κωδικα του ippo00 τον καταλαβαινεις με μια πρωτη ματια, ομολογω πως ακομα εχω δυσκολιες να καταλαβω τι κανει ο κωδικας του H.G.Muller. Ενω τοτε που μου ειχαν εξηγησει πως λειτουργει το καταλαβα, τωρα παλι ειμαι ειμαι πολυ μπερδεμενος. Μπορει κανεις να μου εξηγησει την καταραμενη γραμμη: k=i*A[j]+k/100,A[j]=k%100,i-1?0: printf("%02d",A[78-j]); καθως και γιατι το: for(j=k=0;j<79;j++) ειναι εως το 79?
karabouzouk... Δημοσ. 18 Ιουνίου 2008 Δημοσ. 18 Ιουνίου 2008 ΟΚ πάει αυτό.. ποιο είναι το επόμενο.... :Ρ Κάποιο που να το ξέρει ο καθένας αλλά να θέλει σκέψη...:Ρ:Ρ:Ρ:Ρ
Krokodilos Δημοσ. 18 Ιουνίου 2008 Μέλος Δημοσ. 18 Ιουνίου 2008 Πάντως είναι ωραίο να βλέπες ενα θέμα πέρα από το <<Λύσε μου την άσκηση..>> Ε? Τι εννοεις? Οτι ηταν ασκηση και την εβαλα για να την λυσετε (οπως κανουνε κλασικα πολλοι εδω περα απο οτι εχω δει)? Αν δεν εννοεις αυτο τοτε sorry για την παρανοηση.... Πώς κατάφερες να συζητάς με τόσο pro άτομο; Ε εχουμε κοινο ενδιαφερον για τον προγραμματισμο στο Σκακι(βεβαια εγω τωρα μαθαινω C και τους αλγοριθμους για τον προγραμματισμο στο Σκακι(Alpha-beta, cuttoffs,quiescence search,futility pruning, etc....) ενω αυτος ξερει τα παντα) και απλα τον εχω βοηθησει σαν δοκιμαστης(beta tester) σε πολλα απο τα προγραμματα του και σιγα σιγα γνωριστηκαμε περισσοτερο....
ippo00 Δημοσ. 18 Ιουνίου 2008 Δημοσ. 18 Ιουνίου 2008 lo siento, μιλούσα για τα άτομα που έρχονται με την ασκησούλα του τει,αει,ιεκ.. και δεν μπορούν να την κανουν επειδή βαριούνται, όχι για σένα τέσπα δεν τα παω καλά με τα ελληνικά, ήδη μπερδέυτηκα..
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα