অ্যালকেমিস্ট (1547 বাইট)
_->In_NN+2b+al+g
al+g+0NN->ak
al+g+NN->ah
ah+b->ah+m+d+z+a
ah+0b->C+Z+Q
Z+j+z->Z+j+d
Z+j+0z->M+s
M+g+b->M+g+r
M+g+h->M+g+d
M+g+0b+0h+q->J+U
J+o+h->J+o+m
J+o+a->J+o+d
J+o+0h+0a->2C+an+Q
an+j+h->an+j+d
an+j+0h->aC+s
aC+g->e+am+P
am+l+b->am+l+d
am+l+0b->al+s
ak+b->ak+m+d
ak+0b->C+aj+Q
aj+j+h->aj+j+b
aj+j+0h->I+n
I+f+e->I+f+a
I+f+b->I+f+m+d+z
I+f+0e+0b->C+ai+Q
ai+j+h->ai+j+b
ai+j+0h->aB+n
aB+f->H
H+z->H+d
H+a+e->H
H+0z+0e->G+i
G+i+0b->ag
G+i+b->az+b+n
az+f+0b->Out_a
az+f+b->G+b+n
G+f->G+t
ag+e->ag
ag+0e->af+t
af+i+e->af+i+a
af+i+0e->Out_a
Q->F+s
F+g+b->F+g+y
F+g+A->F+g
F+g+0b+0A->av+o
av+o+0m->w
av+o+m->m+ae+A
ae+m->ae+b
ae+0m->u+n
u+f+b->u+f+m
u+f+e->u+f+E
u+f+A->u+f+k+c
u+f+0b+0e+0A->ad
ad+c->ad+A
ad+0c->ac
ac+y->ac+d+c
ac+0y->ab
ab+c->ab+y
ab+0c->V+l
V+l+0k->x
V+l+k->aa+t
aa+i+0e->W
aa+i+e->Y
Y+E->Y+D+c
Y+0E->X
X+c->X+E
X+0c->aa+i
W+D->W+e
W+0D->V+P
x+E->x
x+d->x
x+b->x+k
x+0E+0d+0b->aw
aw+h->aw+d
aw+0h->aE+s
aE+g->p
p+b->p+2r
p+k->p+d
p+B->p
p+q->p
p+0b+0k+0B+0q->r+q+av+U
w+h->w+d
w+y->w+r
w+C->w+B+q
w+0h+0y+0C->aD+U
aD+o->j
U->au+s
au+g+b->au+g+d
au+g+0b->v
v+d->d+aA+t
aA+i+k->R
aA+i+0k->at
at+B->at+k+c
at+0B->L
L+c->L+B
L+r->L+b
L+0c+0r->as+n
as+f+b->as+f+r
as+f+0b->R
R+0e->K
R+e+q->ar+D+c
ar+e+q->ar+c
ar+0q->aq
aq+c->aq+q
aq+0c->R
K+D->K+e
K+h->K+b
K+0D+0h->ap+P
ap+l+b->ap+l+h
ap+l+0b->v
v+0d+k->v
v+0d+r->v
v+0d+0k+0r->o
s+0d->g
s+d->d+ao+t
ao+i->ao+P
ao+l->s
P->O+c
O+b->2c+O
O+0b->N
N+c->b+N
N+0c+e->O
N+0c+0e->l
n+b->n+c
n+0b->T
T+c->ay
T+0c->e+n
ay+c->b+T
ay+0c->f
t+d->t+c
t+0d->S
S+c->ax
S+0c->e+t
ax+c->d+S
ax+0c->i
অনলাইন ডেমো ।
দ্রষ্টব্য: এটি বেশ ধীর। যদি কোনও দোভাষীর সাথে পরীক্ষা করে যা একবারে একাধিকবার বিধি প্রয়োগ করতে সহায়তা করে (উদাহরণস্বরূপ আমার এক - যদিও আপনার সর্বশেষ সংস্করণ যা পার্সারে একটি বাগ সংশোধন করে তা নিশ্চিত করে নিন) তবে আপনি দুটি নিয়ম যুক্ত করে একটি উল্লেখযোগ্য গতি অর্জন করতে পারেন:
T+2c->b+T
S+2c->d+S
যা বিদ্যমান নিয়মের মাধ্যমে একটি রুটকে ইনলাইন করে
T+c->ay
ay+c->b+T
S+c->ax
ax+c->d+S
আংশিক বিচ্ছেদ
উচ্চ স্তরে, এটি আমার সিজেএম উত্তরের মতো একই পদ্ধতির ব্যবহার করে।
অ্যালকেমিস্টের গণনার মডেলটি মূলত মিনস্কি রেজিস্টার মেশিন । তবে, অ্যালকেমিস্ট খুব সুন্দরভাবে কোড এবং ডেটার সমতুল্যতা প্রকাশ করেছেন, এবং কোনও উত্পাদন নিয়মের বাম দিকে অনেকগুলি টোকেনকে কার্যকরভাবে রাষ্ট্রকে একটি পরমাণুর দ্বারা প্রতিনিধিত্ব করার জন্য বাধা দেয় না: আমরা পরমাণুর একটি টুপল ব্যবহার করতে পারি এবং এটি (পুনরাবৃত্তিমূলক) সাবরটাইনগুলিকে অনুমতি দেয়। এটি গল্ফের জন্য খুব দরকারী। কেবলমাত্র এটির অভাব হ'ল ম্যাক্রো এবং ডিবাগিবিলিটি।
0এক্সএকজন( 2 এ + 1 ) 2এক্সP
e
b
n
b
e
b
t
d
e
d
a, b = b, 0
কমপক্ষে 17 বাইটে প্রসারিত:
S+a->S+b
S+0a->T
S
বর্তমান অবস্থা কোথায় এবং T
পরের রাজ্য। একটি অ ধ্বংসাত্মক "কপি করো" এমনকি আরও ব্যয়বহুল, কারণ এটি থেকে "পদক্ষেপ" হিসাবে কাজ করতে হবে a
করতে b
এবং একটি অক্জিলিয়ারী tmp
থেকে একটি "প্রবর্তন" দ্বারা অনুসরণ tmp
ফিরে a
।
কিংকর্তব্যবিমূঢ়তা
আমি একে অপরের সাথে বিভিন্ন ভেরিয়েবল যুক্ত করেছিলাম এবং প্রোগ্রামটি গল্ফ করার প্রক্রিয়াতে প্রায় 60 টি রাজ্যকে মুছে ফেলেছিলাম এবং তাদের অনেকেরই বিশেষভাবে অর্থবোধক নাম ছিল না তবে পুরোপুরি গল্ফ করার জন্য আমি একটি মিনিমিজার লিখেছিলাম যাতে নামগুলি এখন পুরোপুরি অনিবার্য। গুড লাক বিপরীত প্রকৌশল এটি! এখানে মিনিমিজার (সিজেমে) রয়েছে, যা কোড সম্পর্কে কয়েকটি ধারণা তৈরি করে তবে অন্যান্য অ্যালকেমিস্ট প্রোগ্রামগুলি হ্রাস করার জন্য এটি রূপান্তরিত হতে পারে:
e# Obfuscate / minimise Alchemist program
e# Tokenise
qN%[SNS]e_*S%
e# Get token frequencies for substitution purposes, special-casing the I/O ones
_["+" "0" "2" "->" "_" N "In_n" "n" "Out_tmp2" "tmp2"]-
$e`$W%1f=
e# Empirically we want a two-char input for n and a one-char one for tmp2
["In_n" "Out_tmp2" "n" "tmp2"]\+
["In_NN" "Out_a" "NN"] "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"1/:A+ A2m*:e_"NN"a-+
1$,<
er
_s,p