Immi ⊂ Karimmi
|
Das folgende Programm löst beliebige Probleme in O(n), wobei n die Länge der Ausgabe ist. (Kompilieren kann jedoch etwas länger brauchen.)
#define D define #define U undef #define n # #undef __FILE__ n U __FILE__ n D f __FILE__ n D N endif n D p e(prg) n D e(x) #x n D q # n D o E #F n D E Q( n D G x,y,z) n D H E y,z) n D F ,) n D g o else n D d o D n D u o U n D w E o F D #ifdef prg #ifndef tape n include p n ifndef tape n D tape O n endif #endif n D O Z(O, n D I Z(I, q D i tape n U O n U I n D O ,) n D I ,) q D v tape n U O n U I #undef tape n U tape q U tape #endif /* tape */ q ifndef P q D H y ## z #ifdef prg d c 0 & 0 d R i W v d B Initializing... d L V /* the turing */ d M Y(O)/* state to */ d S(x) T(O,1, start ##x) #else d c 0 #endif q D P P q include f q U Q q D H H q N q U f o ifndef P E # D H y ## z F d O 3 d I 3 d x 3 o if c+2 E o F include <stdio.h> int main() { return 2+c|! printf ( d y "\n" d z ".." d j " " d P "*" d k " " o if c w Y(Z) #Z "Un" "define" "d state " Y(B) y y "Tape:" o elif !c "Usage:" d M 0 " prg=myprg.turing " d L , d R , "[" "tape=" "\"" "O I O..." "\"" "]" g "Final " "tape:" o N u O u I d O "O" d I "I" g d j _ d z ... d k ~ /*StarBox*/ /*********/ d P * d y * E E /,*) F * * State: B /*********/ u O u I o N u x u a u c u B o ifdef s d J s d A l d B m d C r d t K d a L d b M d c R g d J S d A L d B M d C R d T K d a l d b m d c r o N y /*Triangles*/ d V j j j j d W j j j j d X(G y j d Z(G j y d Y(x) P y A B C u X u Y u Z u V u W d X(G y x d Z(G x y d V z O O d W O O z d Y(x) x y A B C u X u Y u Z u V u W d V k k k k d W k k k k d X(G y k d Z(G k y d Y(x) P y A B C u X u Y u Z u V u W y u j u k u z u P u y u O /*EndOfTriang*/ /* Rain */ o ifndef I /*/*/ /*/*/ /*/*/*/*/*/ /*/*/ E E /*/*/*/*/*/,/) F d K(G /*/*/ y o if J(x) u K d K(G x w a X(J(x),A F u K d Z(G x d W O w b Y(C) d P C u Z o U W d Z(G z ## y w c C u Z g /* <- exit */ u K d X(G z ## y w a A u X d X(G x d V O w b Y(A) d P A u X u V d K(G x w c Z(J(x),C F u K o N u a u b o U c d X(G J(_ ## x) d V J(_O) d Z(G J(_ ## x) d W J(_O) d Y(x) J(_ ## x) o ifdef s u t d t(G z d j S(x) d k T g u T d T(G z d j s(x) d k t o N u tape o include p u tape d stop_O x d stop_I x w a(P) O&I&x d O 0 d I 0 d x 0 w c a(P) u O u I u x d left 0 d right 1 w j k(P ## x) u P u left u right u stop_O u stop_I u Y o U X u V u Z o U W u A u B o U C u j u k w B J (.) u J u t o U T /*Codeblk*/ o D P P o include f E n U Q F E n D H H F g ); } w P x o N o N o U f u l u L o U m u M u r o U R u S u s o U B u a u c
Erklärung und alle Dateien ("herrmann1") auf der Seite vom IOCCC