рднрд╛рдЧ Iрднрд╛рдЧ IIрднрд╛рдЧ IIIрднрд╛рдЧ ivрднрд╛рдЧ vрдпрд╣ рд▓реЗрдЦ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЧреВрдврд╝ рднрд╛рд╖рд╛
LMCode рдХреЗ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдЬреЛ
рд▓рд┐рдЯрд┐рд▓ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣
LMC рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдбрд╛рдВрддрд░рдХ рдПрдореБрд▓реЗрдЯрд░ рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣рд╛рдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдХрдорд╛рдВрдб рдХреЗ рдмрдЬрд╛рдп INP, STA, ADD, SUB, OUT, рд╡рд┐рд╢реЗрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдХреНрд╖рд░ред
рдХрдорд╛рдВрдб_рдордо рдХрдорд╛рдВрдб рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рд╕реЗ рдХрдорд╛рдВрдб рдореЗрдВ рдмрджрд▓рд╛рд╡, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдмреНрд░реЗрдирдлреИрдХ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЖрдЗрдПрдирдкреА рдХрдорд╛рдВрдб рдХреЛ рдореИрдЪ рдХрд░рдиреЗ рджреЗрдВ
- OUT рдХрдорд╛рдВрдб рдореЗрд▓ рдЦрд╛рддреА рд╣реИ ред
- ADD рдХрдорд╛рдВрдб + рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ
- рдЙрдк рдХрдорд╛рдВрдб рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ -
- STA рдХрдорд╛рдВрдб ~ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ
- LDA рдХрдорд╛рдВрдб ^ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ
рд╣рдо рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдмреИрдЯрд░реА рдореЗрдВ рдЗрдирдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдПрдХ рдирдВрдмрд░ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдореЗрдореЛрд░реА рдореЗрдВ рдирдВрдмрд░ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ, рдореЗрдореЛрд░реА рд╕реЗ рдирдВрдмрд░ рдХреЛ рдмреИрдЯрд░реА рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рддрд╛ рд╣реИ), рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рджреЛрдЧреБрдиреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред
рдХреЛрдбрд╛рдВрддрд░рдХ LMC рдореЗрдВ, рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ (рдЖрд░рдВрднрд┐рдХ рд╕реЗрд▓ 20 рд╣реЛрдиреЗ рджреЗрдВ)
INP STA 20 ADD 20 OUT
LMCode рдореЗрдВ, рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд╕рдВрдж рдЖрдПрдЧрд╛
, ~ +редрд╣рдорд╛рд░реЗ LMCode рдорд╢реАрди рдореЗрдВ, рдХреЛрдб рдореЗрдореЛрд░реА рдФрд░ рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд░реНрд╡рд░реНрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░), рд╣рдо LMCode рдХреЛрдб рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдХрдорд╛рдВрдб_рдордо рд▓рд╛рдЗрди рдмрдирд╛рдПрдВрдЧреЗред
рдХрдорд╛рдВрдб_рдордо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрдорд╛рдВрдб рдХреА рдореЗрдореЛрд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧрд╛ред рд╣рдо рдПрдХ
data_mem рдбреЗрдЯрд╛
рдРрд░реЗ рднреА рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧрд╛ред
рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ
рдХрдорд╛рдВрдб_рдореЗрдо , ~ + рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ
ред #include <stdio.h> int main(void) { int i=0; // int j=0; // int acc = 0; // char command_mem[100] = ",~+."; // int data_mem[10]={0}; // while (command_mem[i] != '\0') { if (command_mem[i]==',') // scanf("%d", &acc); if (command_mem[i]=='+') // data_mem acc=acc+data_mem[j]; // if (command_mem[i]=='~') // data_mem[j]=acc; // if (command_mem[i]=='.') // printf("Output: %d",acc); i++; // } // printf("\n"); // for (int k = 0; k<10; k++) printf("%d ", data_mem[k]); return 0; }
рдЗрдирдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдирдВрдмрд░
123 рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рд╣рдореЗрдВ рдирдВрдмрд░
246 рдорд┐рд▓рддрд╛ рд╣реИред
рдЖрдк
oline ide
ideone.com рдореЗрдВ рдЪреЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗрдВ
- рдЕрдЧрд▓реА рд╕реЗрд▓ рдореЗрдВ рдЬрд╛рдПрдВ >
- рдкрд┐рдЫрд▓реЗ рд╕реЗрд▓ рдкрд░ рдЬрд╛рдПрдВ <
рдкреНрд░рддреАрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп
> рд╣рдо рдбреЗрдЯрд╛ рд╕рд░рдгреА
data_mem рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ
j рдХреЛ рдмрдврд╝рд╛рдПрдВрдЧреЗ if(command_mem[i]=='>') j++;
рдкреНрд░рддреАрдХ
<рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп
, рд╣рдо рдбреЗрдЯрд╛ рдРрд░реЗ
data_mem рдХреЗ рдЗрдВрдбреЗрдХреНрд╕
рдЬреЗ рдХреЛ рдХрдо рдХрд░реЗрдВрдЧреЗ
if(command_mem[i]=='<') j--;
рдХрдорд╛рдВрдб рдкрд░ рдЖрдЧреЗ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП
? рд╣рдо рд▓реЗрдмрд▓ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВрдЧреЗ
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рднреА рд╡рд░реНрдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ
? рдФрд░
! if(command_mem[i]=='?') { while(command_mem[i] != '!' ) { i++; } }
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
5 , рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде
, рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкрд╛рдВрдЪ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВред
~> ~> ~> ~> ~ #include <stdio.h> int main(void) { int i=0; // int j=0; // int acc = 0; // char command_mem[100] = ",~>~>~>~>~"; // int data_mem[10]={0}; // while (command_mem[i] != '\0') { if (command_mem[i]==',') // scanf("%d", &acc); if (command_mem[i]=='+') // data_mem acc=acc+data_mem[j]; // if (command_mem[i]=='~') // data_mem[j]=acc; // if (command_mem[i]=='.') // printf("Output: %d",acc); if(command_mem[i]=='>') // j++; if(command_mem[i]=='<') // j--; if(command_mem[i]=='?') { // ! while(command_mem[i] != '!') i++; } i++; // } // printf("\n"); // for (int k = 0; k<10; k++) printf("%d ", data_mem[k]); return 0; }
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдорд┐рд▓рддреА рд╣реИ
5 5 5 5 5 0 0 0 0 0 0 0ideone.comрдФрд░ рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдХрджрдо рдЖрдЧреЗ рдмрд┐рдирд╛ рд╢рд░реНрдд рдХреВрдж рдЖрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
, ~> ~!> ~> ~> ~!рд╣рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдорд┐рд▓рддреА рд╣реИ
5 5 0 0 0 0 0 0 0 0 0 0ideone.comрдкрдЬрд╝рдлрд╝реНрд▓реИрдЧ рдзреНрд╡рдЬ
рдкреЙрдЬрд╝рд┐рдЯреЗрд░реЛрдЬрд╝реЛ -рдлрд╝реНрд▓реИрдЧ рдЬреЛрдбрд╝реЗрдВ
рдзреНрд╡рдЬ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдмреИрдЯрд░реА рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдЙрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛред
if(acc>=0){ pzflag=1;} else { pzflag=0;}
рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП
pzflag == 1 рд╣рдо рдХрдорд╛рдВрдб
{ рдФрд░
} рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗред
if(command_mem[i]=='{') && (pzflag==1){ while(command_mem[i] != '}' ) i++; }
рдЗрд╕рдХреЗ рдмрд╛рдж, рджреЛ рдирдВрдмрд░ рдХреЛ рд╣рдорд╛рд░реА рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП
data_mem [0] = 3 рдФрд░
data_mem [1] = 5рд╣рдо рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
#include <stdio.h> int main(void) { int i=0; // int j=0; // int acc = 0; int pzflag = 1; // acc>=0 char command_mem[100] = "^>-{^?}<^!."; // int data_mem[10]={0}; data_mem[0]=3; // data_mem[1]=5; while ( command_mem[i] != '\0') { if(command_mem[i]==',') // scanf("%d", &acc); if(command_mem[i]=='+') // data_mem acc=acc+data_mem[j]; // if(command_mem[i]=='-') // data_mem acc=acc-data_mem[j]; // if(command_mem[i]=='>') // j++; if(command_mem[i]=='<') // j--; if(command_mem[i]=='~') // data_mem[j]=acc; // if(command_mem[i]=='^') // data_mem acc=data_mem[j]; // if(command_mem[i]=='.') { // printf("Output: %d",acc); printf(" "); }; if(command_mem[i]=='?') { // ! while(command_mem[i] != '!') i++; } if (command_mem[i]=='{' && pzflag==1) { // acc>=0 while(command_mem[i] != '}') i++; } if(acc>=0){ // , acc>=0 pzflag=1; } else { pzflag=0; } i++; // } // printf("\n"); // for (int k = 0; k<10; k++) printf("%d ", data_mem[k]); return 0; }
ideone.comрд╡рд╛рдкрд╕ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░
pz_prev рдЬреЛрдбрд╝реЗрдВред
рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░
{рд╣реИ , рддреЛ "рдЭрдВрдбрд╛
рдмрдврд╝рд╛рдПрдВ "
pz_prev if (command_mem[i]=='}') pz_prev=1;
рдпрджрд┐ рд▓реЗрдмрд▓
} рдХрдорд╛рдВрдб
{ рд╕реЗ рдкрд╣рд▓реЗ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╡рд╛рдкрд╕ рдХреВрджрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
if (command_mem[i]=='{' && pzflag==1 && pz_prev==1) { while(command_mem[i] != '}') i--; }
рд╣рдо рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ
10 рд╕реЗ
0 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рдо рд╕рдВрдЦреНрдпрд╛
10 рдФрд░
2 рдХреЛ
data_mem рд╕рд░рдгреА рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░, рдЬрдмрдХрд┐
рдЖрд╡реЗрд╢ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдЙрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИ, рд╣рдо
10 рд╕реЗ
2 рдШрдЯрд╛рдПрдВрдЧреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ
#include <stdio.h> int main(void) { int i=0; // int j=0; // int acc = 0; int pzflag = 1; // acc>=0 int pz_prev=0; // acc>=0 char command_mem[100] = "}^.>-<~{"; // 10 0 int data_mem[10]={0}; data_mem[0]=10; // data_mem[1]=2; while ( command_mem[i] != '\0') { if(command_mem[i]==',') // scanf("%d", &acc); if(command_mem[i]=='+') // data_mem acc=acc+data_mem[j]; // if(command_mem[i]=='-') // data_mem acc=acc-data_mem[j]; // if(command_mem[i]=='>') // j++; if(command_mem[i]=='<') // j--; if(command_mem[i]=='~') // data_mem[j]=acc; // if(command_mem[i]=='^') // data_mem acc=data_mem[j]; // if(command_mem[i]=='.') { // printf("Output: %d",acc); printf(" "); }; if (command_mem[i]=='}') // ? pz_prev=1; if(command_mem[i]=='?') { // ! while(command_mem[i] != '!') i++; } if (command_mem[i]=='{' && pzflag==1 && pz_prev==0) { // while(command_mem[i] != '}') // acc>=0 i++; } if (command_mem[i]=='{' && pzflag==1 && pz_prev==1) { // while(command_mem[i] != '}') // acc>=0 i--; } if(acc>=0){ // , acc>=0 pzflag=1;} else { pzflag=0;} //printf("i=%d",i);printf(" "); i++; // } // printf("\n"); // for (int k = 0; k<10; k++) printf("%d ", data_mem[k]); return 0; }
ideone.comрджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ
A рдФрд░
B рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
B A рдХреЛ
B рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛
редрд▓реВрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рд╣рдо
рдП рдХреЛ рдПрдХ рд╕реЗ рдШрдЯрд╛рдПрдВрдЧреЗ, рдФрд░, рдЬрдмрдХрд┐
рдП рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ,
рдмреА рдХреЛ рдмреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
LMCode рдХрд╛рд░реНрдпрдХреНрд░рдо
} >>> ^ <+> ~ <<< ^> - <~ {>>> ^ред рд╕рдВрдЦреНрдпрд╛
A + 1 рдФрд░
B рдХреЛ рдЧреБрдгрд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдПрдХ рдХрд╛рд░рдХ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реВрдк рдХреЗрд╡рд▓ рддрдм рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛ рдЬрдм
-1 рдЖрд╡реЗрд╢ рдореЗрдВ рд╣реЛ ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
5 рдХреЛ
5 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ
data_mem рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдорд╛рди
рд░рдЦреЗрдВ data_mem[0]=4; data_mem[1]=1; data_mem[2]=5;
ideone.comрдмрд┐рдирд╛ рд╢рд░реНрдд рдХреВрдж
рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝реЗрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдкреНрд░рдЪрд▓рд┐рдд рдЪрд░ рдЬреЛрдбрд╝реЗрдВред
рд╣рдо рднреА
acc = 0 рдХреЗ рддрд╣рдд
рдЖрдЧреЗ / рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдХреНрд░рдордг рдЬреЛрдбрд╝рддреЗ
рд╣реИрдВ ред рдРрд╕реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП,
zflag рдзреНрд╡рдЬ (ZeroFlag) рдФрд░
z_prev рд╡реИрд░рд┐рдПрдмрд▓
рдмрдирд╛рдПрдВ ред
рд╣рд╛рд▓рдд
zflag == 1 рджреНрд╡рд╛рд░рд╛ рдмрджрд▓рд╛рд╡ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
( рдФрд░
)рд╣рдо рдмрд┐рдирд╛ рд╢рд░реНрдд рд╕рдВрдХреНрд░рдордг рдФрд░ рд╕реНрдерд┐рддрд┐
zflag == 1 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
5 рдФрд░
5 рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ
data_arr рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдорд╛рди рд░рдЦреЗрдВ
data_arr[0]=5; data_arr[1]=1; data_arr[2]=5;
LMCode рдХрд╛рд░реНрдпрдХреНрд░рдо
! >>> ^ <+> ~ <<< ^> - <~ (?) >>> ^ред рдХреЛрдбрд╛рдВрддрд░рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ
INP STA 20 INP STA 21 INP STA 22 LDA 23 ADD 22 STA 23 LDA 20 SUB 21 STA 20 BRZ 14 BRA 06 LDA 23 OUT HLT
рд╕реА рдХреЛрдб
#include <stdio.h> int main(void) { int i=0; // int j=0; // int acc = 0; int pzflag = 1; // acc>=0 int zflag =1; // acc==0 int pz_prev=0; // acc>=0 int z_prev=0; // acc==0 int prev=0; // char command_mem[100] ="!>>>^<+>~<<<^>-<~(?)>>>^."; int data_mem[10]={0}; data_mem[0]=5; // data_mem[1]=1; data_mem[2]=5; while ( command_mem[i] != '\0') { if(command_mem[i]==',') // scanf("%d", &acc); if(command_mem[i]=='+') // data_mem acc=acc+data_mem[j]; // if(command_mem[i]=='-') // data_mem acc=acc-data_mem[j]; // if(command_mem[i]=='>') // j++; if(command_mem[i]=='<') // j--; if(command_mem[i]=='~') // data_mem[j]=acc; // if(command_mem[i]=='^') // data_mem acc=data_mem[j]; // if(command_mem[i]=='.') { // printf("Output: %d",acc); printf(" "); }; if (command_mem[i]=='}') // ? pz_prev=1; if (command_mem[i]==')') // ? z_prev=1; if (command_mem[i]=='!') // ? prev=1; // if (command_mem[i]=='?' && prev==0) { while(command_mem[i] != '!') i++; } // if (command_mem[i]=='?' && prev==1) { while(command_mem[i] != '!') i--; } // acc=0 if (command_mem[i]=='(' && zflag==1 && z_prev==0) { while(command_mem[i] != ')') i++; } // acc=0 if (command_mem[i]=='(' && zflag==1 && z_prev==1) { while(command_mem[i] != ')') i--; } // acc>=0 if (command_mem[i]=='{' && pzflag==1 && pz_prev==0) { while(command_mem[i] != '}') i++; } // acc>=0 if (command_mem[i]=='{' && pzflag==1 && pz_prev==1) { while(command_mem[i] != '}') i--; } // if(acc>=0){ pzflag=1;} else { pzflag=0;} if(acc==0){ zflag=1;} else { zflag=0;} //printf("i=%d",i);printf(" "); i++; // } // printf("\n"); // for (int k = 0; k<10; k++) printf("%d ", data_mem[k]); return 0; }
ideone.comрд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЭрдВрдбреЗ рдирд╣реАрдВ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдмрдЬрд╛рдп рддреБрд░рдВрдд рдЬрд╛рдВрдЪ рд▓реЗрдВ рдХрд┐ рдмреИрдЯрд░реА рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдХреНрдпрд╛ рд╣реИред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред
#include <stdio.h> int main(void) { int i=0; // int j=0; // int acc = 0; int pzflag = 1; // acc>=0 int zflag =1; // acc==0 int pz_prev=0; // acc>=0 int z_prev=0; // acc==0 int prev=0; // char command_mem[100] ="}>>^>+.~<+.~<<^>-<~{"; int data_mem[10]={0}; data_mem[0]=5; // data_mem[1]=1; data_mem[2]=1; while ( command_mem[i] != '\0') { if(command_mem[i]==',') // scanf("%d", &acc); if(command_mem[i]=='+') // data_mem acc=acc+data_mem[j]; // if(command_mem[i]=='-') // data_mem acc=acc-data_mem[j]; // if(command_mem[i]=='>') // j++; if(command_mem[i]=='<') // j--; if(command_mem[i]=='~') // data_mem[j]=acc; // if(command_mem[i]=='^') // data_mem acc=data_mem[j]; // if(command_mem[i]=='.') { // printf("Output: %d",acc); printf(" "); }; if (command_mem[i]=='}') // ? pz_prev=1; if (command_mem[i]==')') // ? z_prev=1; if (command_mem[i]=='!') // ? prev=1; // if (command_mem[i]=='?' && prev==0) { while(command_mem[i] != '!') i++; } // if (command_mem[i]=='?' && prev==1) { while(command_mem[i] != '!') i--; } // acc=0 if (command_mem[i]=='(' && zflag==1 && z_prev==0) { while(command_mem[i] != ')') i++; } // acc=0 if (command_mem[i]=='(' && zflag==1 && z_prev==1) { while(command_mem[i] != ')') i--; } // acc>=0 if (command_mem[i]=='{' && pzflag==1 && pz_prev==0) { while(command_mem[i] != '}') i++; } // acc>=0 if (command_mem[i]=='{' && pzflag==1 && pz_prev==1) { while(command_mem[i] != '}') i--; } // if(acc>=0){ pzflag=1;} else { pzflag=0;} if(acc==0){ zflag=1;} else { zflag=0;} //printf("i=%d",i);printf(" "); i++; // } // printf("\n"); // for (int k = 0; k<10; k++) printf("%d ", data_mem[k]); return 0; }
ideone.comрдореИрдВрдиреЗ
рдпрд╣рд╛рдБ esolang.org рдкрд░ LMCode рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдиреЛрдЯ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛
PS
рдпрд╣рд╛рдВ рдЗрдВрдЯреЗрд▓ -4004
рдХреЗ рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП рдХреЛрдбрд╛рдВрддрд░рдХ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ