Shakespeare Programming Language został stworzony w 2001 roku przez dwóch szwedzkich studentów, Karla Hasselströma i Jona Åslunda i łączy, jak głoszą autorzy ,
wyrazistość języka BASIC z przyjaznym dla użytkownika językiem asemblera.
Odpowiedzi idą od góry do dołu. Często zdarza się, że odnoszę się do starszych lub wcześniejszych fragmentów.
( link dla mnie: edycja )
Faktoid:
Kod Szekspira przypomina, jak można się spodziewać, sztukę Szekspira, w której zmienne są znakami w grze, a ich wartość zmienia się, gdy są „obrażane” lub wychwalane.
Długość 1 fragmentu:
I
Kod Szekspira jest podzielony na Akty, a same akty są podzielone na Sceny, dla przyczynowych „przeskoków”. Zdefiniowanie aktu jako Act I
oznacza, że będzie to na przykład pierwszy fragment kodu, który należy uruchomić - ale nie tylko.
Długość fragmentu 2:
as
Używany w porównaniu dwóch „znaków”.
Długość fragmentu 3:
day
Do tej pory możesz mieć wrażenie, że SPL jest bardzo gadatliwy. I dziwne. I jeszcze nic nie widziałeś. day
, w SPL wynosi 1. Wszystkie rzeczowniki „pozytywne” i „neutralne” są uważane za 1
, podobnie jak wszystkie „negatywne” -1
.
Długość 4 fragmentu:
rich
Co to jest rich
? Przymiotnik. W języku SPL przymiotniki określają wartość rzeczownika, do którego są przyłączone, mnożąc je przez dwa. Zobacz implementację we fragmencie 14.
Długość fragmentu 5:
Act I
Implementacja pierwszego fragmentu kodu. Wszystkie akty mogą otrzymać tytuł, np. Act I: Hamlet must die!
Ponieważ wszystko po cyfrze rzymskiej jest ignorowane przez analizator składni.
Długość fragmentu 6:
better
Każdy język ma określone warunki, a SPL nie jest wyjątkiem. Tyle że, ponieważ jest to język o długiej składni (a czy wspominałem, że jest dziwny?), Jego instrukcje warunkowe będą długie. Zapytanie Ofelii o Juliet Am I better than you?
jest jak if (Ophelia > Juliet)
w większości „normalnych” języków. I oczywiście możesz zapytać na odwrót: Am I not better than you?
jest odpowiednikiem if (Ophelia < Juliet)
. I już możesz zgadnąć, jak to =
jest przetłumaczone na SPL: as good as
- użycie fragmentu kodu 2.
Jednak good/better
nie jest to jedyny sposób dokonywania porównań w tym języku shakesperian, możesz użyć dowolnego przymiotnika. Obowiązuje tu również ta sama zasada fragmentu 3, przy czym przymiotniki „pozytywne” mają wartość >
, a „przeczące” - przymiotniki <
.
Długość 7 fragmentu:
Juliet:
To jest wywołanie zmiennej; potem jego / jej instrukcje / deklaracje / cokolwiek nastąpi.
Ograniczeniem SPL jest to, że ma ograniczoną liczbę zmiennych: Romeo, Juliet, Hamlet, Ofelia, MacBeth i tak dalej to kilka przykładów „znaków”, które pojawią się w programie Shakesperian.
Długość 8 fragmentu:
[Exeunt]
[Exeunt]
jest umieszczany, gdy wszystkie „postacie” opuszczają „scenę”. Mam nadzieję, że będę mógł później rozwinąć nieco więcej na temat interakcji między postaciami. Zasadniczo jest to ostatnia instrukcja dowolnego programu SPL, chociaż [Exeunt]
nie jest to konkretnie „znak” terminala języka. Aby zobaczyć inny przykład, zobacz fragment 27.
Długość 9 fragmentu:
as bad as
Dziewięć znaków, które mają reprezentować zwykły =
- za pomocą fragmentu 2. Czy wspomniałem, że SPL jest dziwny? Przykłady: patrz fragment 30. (i tak, istnieje więcej niż jeden sposób na wydruk)
Długość 10 fragmentu:
difference
Fantazyjny sposób przedstawiania -
, odejmowanie. Możesz wykonywać operacje matematyczne na SPL, chociaż prawdopodobnie będziesz potrzebować całego dnia, aby wszystko było dobrze.
Faktoid
(ponieważ udało mi się jakoś dotrzeć do dziesięciu fragmentów kodu, zróbmy sobie przerwę i zróbmy kolejny faktoid na temat SPL)
Jeśli chcesz uruchomić swój kod shakesperian w pełnej krasie, jest ta strona - wciąż go testuję, ponieważ odkryłem go jeszcze pięć minut temu. Istnieje również sposób na przetłumaczenie go do C przy użyciu translatora .
Inną witryną do uruchamiania kodu SPL jest ta, która działa poprzez wewnętrzne tłumaczenie kodu SPL na inny ezoteryczny język: Oracle PL / SQL.
Długość fragmentu 11:
[Exit Romeo]
Tak! Nareszcie mogę mówić o interakcji między postaciami! Aby zmienić jego wartość lub wejść w interakcję z innymi, „postać” musi być na scenie - wchodzić z nią [Enter Romeo]
. Jeśli znak jest adresowany, ale nie jest obecny, występuje błąd czasu wykonywania i program zatrzymuje się. Ponieważ w SPL wartość zmiennych jest ustalana na podstawie nazw, którymi są chwaleni - lub obrażani - przez inne postacie na scenie. Wydaje mi się, że powinienem podać przykład, aby wyjaśnić pewne zamieszanie, które może powodować moje kiepskie wyjaśnienie, ale być może najlepiej jest opóźnić kilka krótkich fragmentów.
Długość 12 fragmentu:
Remember me.
SPL jest dość „podstawowy”, w porządku - ale ma stosy! Kiedy na przykład Romeo mówi Juliet, aby „go zapamiętała”, tak naprawdę mówi swojej ukochanej, aby zwiększyła wartość Romea na jej stosie. Podawanie wartości odbywa się za pomocą Recall your happy childhood!
, lub Recall your love for me
, w zasadzie, dowolnego zdania, które zaczyna się od Recall
- reszta jest po prostu artystycznym motorem, jak fragment 22
Długość 13 fragmentu kodu
Let us return
Szekspirowski sposób posiadania goto
. I tu przydają się Akty i Sceny. Jeśli Romeo powie Juliet we shall return to Act II
(tak, znowu, istnieje wiele sposobów na napisanie tego), program przejdzie do tej konkretnej części kodu. Widać to również obok instrukcji warunkowych.
Długość 14 fragmentu kodu
my little pony
Tak, to była seria z lat 80. Tutaj jest 2*1
. Dlaczego? Ponieważ a pony
jest (nieco) pozytywnym rzeczownikiem i little
jest przymiotnikiem. Pamiętając fragmenty 3 i 4, mamy little = "2 *"
i pony = "1"
.
Długość 15 fragmentu kodu
Speak thy mind!
W programie SPL zobaczysz to (lub Speak your mind!
to samo) bardzo często . Zasadniczo wyprowadza wartość każdego „znaku” w postaci cyfr, liter lub czegokolwiek innego, w zależności od zestawu znaków używanego przez komputer. Jest też to, Open your mind.
co robi prawie to samo, aczkolwiek wypisywane jest tylko w postaci liczbowej.
Długość 16 fragmentu kodu
You are nothing!
Kiedy ktoś powie ci to w prawdziwym życiu, poczujesz się przygnębiony. Kiedy Ofelia mówi o tym Hamletowi w programowaniu szekspirowskim, Hamlet czuje się bezwartościowy. Co to znaczy? Że Hamlet = 0
.
Długość 17 fragmentu kodu
Ophelia, a wench.
W scenariuszu, zanim rozpocznie się faktyczna gra, postacie muszą zostać przedstawione. W większości języków programowania zmienne należy również zadeklarować przed użyciem. Widząc, że SPL jest językiem programowania, który przypomina scenariusz, w ten sposób deklarujesz jego zmienne, stwierdzając, które z nich pojawiają się podczas programu.
Ale co znaczy „dziewka”? Czy to oznacza, że jest to konkretna (i fajna) nazwa typu danych? Cóż ... Nienawidzę cię rozczarowywać, ale to nic nie znaczy: wszystko po przecinku jest ignorowane przez analizator składni, co oznacza, że możesz umieścić tam najbardziej oburzający napęd, jaki możesz wymyślić.
Długość 18 fragmentu kodu
lying sorry coward
-4
dla wszystkich ziemskich stworzeń. Dlaczego? Ponieważ 2*2*(-1) = -4
.
Długość 19 fragmentu kodu
Romeo:
Remember me.
W końcu!!! Mogę w końcu wypisać pełną poprawną instrukcję składni (choć krótką)! W ten sposób używasz fragmentu 12: najpierw deklarujesz, kto mówi, a następnie w następnym wierszu piszesz „dialog”. Zwykle tylko dwie „postacie” są na scenie, aby uniknąć parsera smutnego i zagubionego. Kiedy potrzebujesz innej „postaci”, bierzesz jedną ze sceny i zastępujesz ją nową.
Długość 20 fragmentu kodu
cube of thy codpiece
Chciałem rozwinąć nieco więcej na ten temat, ale, prawdę mówiąc, rzeczy, które wymyśliłem, są wciąż zbyt krótkie, aby zmieścić się w tym fragmencie. I tak, przynoszę wam to, co w końcu jest -1
- ponieważ (-1) 3 = -1 (i codpiece
jest rzeczownikiem „negatywnym”, ponieważ są niewygodne i tak dalej). SPL rozumie kilka bardziej skomplikowanych operacji arytmetycznych jako pewne potęgowanie i pierwiastki kwadratowe.
Faktoid (jeszcze jeden, ponieważ osiągnęliśmy kolejny kamień milowy)
„Hello World Program” w Shakesperian ma 89 linii i ponad 2400 znaków, jak pokazano tutaj .
Długość 21 fragmentu kodu
Listen to your heart.
We fragmencie 15 wydałeś coś; tutaj wprowadź liczbę do programu. Jeśli chcesz wprowadzić znak, użyjesz go Open your mind.
zamiast tego. I, rzecz jasna, ta wartość zostanie zapisana w „postaci”, z którą się rozmawia.
Długość 22 fragmentu kodu
Recall your childhood!
Wyrzucanie liczby całkowitej ze stosu odbywa się w ten sposób, jak wyjaśniono we fragmencie 12. Kiedy, na przykład, Ofelia mówi Hamletowi wspomniane zdanie, powoduje, że Hamlet bierze liczbę całkowitą ze swojego stosu i przyjmuje tę wartość.
Oczywiście, dopóki słowo recall
zaczyna się od zdania, możesz wypełnić resztę praktycznie wszystkim, czego pragnie twój twórczy, wstrząsający umysł.
Długość 23 fragmentu kodu
Are you better than me?
Implementacja fragmentu 6. Gdy „znak” zadaje takie pytanie drugiemu, to, co robi, jest równoważny z if (x > y)
bardziej popularnymi językami programowania. Wykonanie tej instrukcji musi zostać opóźnione, dopóki nie będę mieć więcej dostępnych znaków.
Długość 24 fragmentu kodu
[Enter Romeo and Juliet]
Tak, „znaki” można wprowadzać parami. Nie jest wymagane, aby jedna „postać” wchodziła na scenę, a za nią następowała inna.
Długość 25 fragmentu kodu
remainder of the quotient
25 znaków tylko do napisania %
. 25 znaków, aby pozostała część podziału. I z niego korzystać? To jest jeszcze większe - patrz fragment 75.
Długość 26 fragmentu kodu
Let us return to scene II.
Oto on, goto
w SPL, który działa tak, jak można się spodziewać w języku programowania. Rzecz w tym: możesz przeskakiwać między scenami w tym samym akcie i między aktami; ale nie można przeskakiwać między scenami w różnych aktach.
Długość 27 fragmentu kodu
[Exeunt Ophelia and Hamlet]
Kiedy więcej niż jedna „postać” opuszcza scenę, zamiast pozostać Exit
w tradycji teatralnej SPL, używa się łacińskiego słowa „Exeunt”. Czasami można go zastąpić tylko fragmentem 8.
Długość 28 fragmentu kodu
Scene I: Ophelia's flattery.
Deklaracja sceny. Jak możesz się już spodziewać, jeśli ze mną poradziłeś, ważne jest to Scene I
, że reszta to artystyczny puch.
Powstało kilka kompilatorów (takich jak ten, który kompiluje od SPL do C, napisanych w Pythonie ), które zamiast tego odnoszą się do tekstu po numeracji aktu / sceny. Choć bardziej logiczne (w końcu podczas gry, gdy postacie mówiące w stylu „wracajmy do aktu I” mogą być uważane za głupie), trzymam się pierwotnego sposobu.
Długość 29 fragmentu kodu
You pretty little warm thing!
Tak, jeszcze jedna stała (ponieważ potrzebujemy znacznie więcej znaków, aby wykonywać operacje arytmetyczne). Ten jest równy 8
, ponieważ 2*2*2*1 = 8
.
Długość 30 fragmentu kodu
You are as cowardly as Hamlet!
Mówiąc to na przykład Romeo, oznacza to Romeo = Hamlet
. Jak fragment 9.
Faktoid (tak, kolejny punkt orientacyjny osiągnięty!)
Ten język został stworzony do zadania na kursie analizy składni - dlatego autorzy nie utworzyli kompilatora SPL. Więcej: wydaje się, że autorzy SPL zerwali więzi z ich twórczością, ponieważ nic nie wydaje się być zmodyfikowane w języku od 2001 roku ...
Długość 31
Am I as horrid as a flirt-gill?
Tak, wiem, to trochę powtarzający się fragment 23, chociaż tutaj porównujemy „postać”, która mówi „flirtującą blaszką” (jeśli wolisz if (Ophelia == -1)
). Rzecz w tym...
Długość 32 fragmentu kodu
If so, let us return to scene I.
... teraz mogę przedstawić then
SPL, warunkową metodę przeskakiwania oraz shakeperowski sposób implementacji pętli. Możesz na przykład zmusić Romeo do przyjęcia wartości 0
, zwiększyć jego wartość podczas wykonywania innego zadania i zatrzymać się, gdy osiągnie 10, a następnie kontynuować program.
Długość 33 fragmentu kodu
If not, let us return to scene I.
Przypominamy, że zamiast tego możemy przejść do innej sceny, jeśli testowany przez nas warunek jest fałszywy .
Długość 34 fragmentu kodu
Open your mind! Remember yourself.
Dwie instrukcje z rzędu, yippie! Pierwszy odczytuje znak, drugi wpycha go do stosu pamięci drugiego znaku.
Długość fragmentu 35
Act I: Death!
Scene I: Oh, shit.
Właściwy sposób deklarowania aktu i sceny. Gustownie dodaj artystyczną papkę.
Długość 36 fragmentu kodu
Thou art as sweet as a summer's day!
Innym sposobem na powiedzenie, że „postać”, do której się mówi, nabierze wartości 1
- ponieważ letnie dni są miłe i przyjemne.
Długość 37 fragmentu kodu
Art thou more cunning than the Ghost?
Ophelia tym pytaniem do środków wiosce, tłumacząc to do mniej czytelnym języku programowania if (Hamlet > the Ghost)
. Jest to fragment 23 od nowa, tak - ale pokazuje, że nie trzeba pytać „bohaterów”, czy są od siebie lepsi: każde inne pytanie też zadziała.
Długość 38 fragmentu kodu
[Enter the Ghost, Romeo and the Ghost]
Tak, dzwonię do „znaku” dwa razy - ponieważ chciałem, aby program dał mi błąd. Wywołanie „postaci”, która jest już na scenie lub nieobecności, aby wyjść, spowoduje wielki smutek dla parsera / kompilatora.
Długość 39 fragmentu kodu
the sum of a fat lazy pig and yourself!
Pełna instrukcja wygląda lepiej niż to, dam ci to, ale ... oto nasza pierwsza operacja arytmetyczna! Co to właściwie wszystko znaczy? Cóż, pig
jest brudnym zwierzęciem (choć smacznym), więc jest równoważne -1
, ma dwa przymiotniki, co oznacza fat lazy pig
równe 2*2*(-1) = -4
. Ale co z yourself
? To zaimek zwrotny, a nie nazwa ani przymiotnik. Pamiętaj, że SPL opiera się na dialogach między „postaciami”; w ten sposób yourself
odnosi się do innej „postaci” na scenie. Dochodzimy do końca i odkrywamy, że „suma tłustej leniwej świni i ciebie” to w rzeczywistości -4 + x
.
Długość 40 fragmentu kodu
the sum of a squirrel and a white horse.
Tak, kolejna suma, ale ta jest prostsza niż fragment 39. To tylko 1 + 2
- 3
jeśli moja matematyka jest poprawna.
Faktoid (wciąż ze mną po tych czterdziestu fragmentach artystycznego puchu? Zasługujesz na nagrodę).
SPL w wersji 1.2.1 można pobrać tutaj .
Długość 41 fragmentu kodu
Juliet:
Speak thy mind!
[Exit Romeo]
Czasami „postacie” są wzywane tylko na scenie, aby zmienić ich wartość - co w prawdziwej grze byłoby dziwne. W każdym razie Juliet sprawia, że jej ukochany Romeo drukuje swoją przechowywaną wartość, po czym wychodzi ze sceny.
Długość fragmentu 42
Speak YOUR mind! You are as bad as Hamlet!
Znowu dwie instrukcje w jednym wierszu (możemy mieć wiele, ale długość fragmentu jeszcze na to nie pozwala); tutaj mamy „znak”, który mówi drugiemu, aby wypisał swoją wartość i przyjął dowolną wartość, jaką ma Hamlet. Mylące? Mayhap.
Długość 43 fragmentu kodu
Am I as horrid as a half-witted flirt-gill?
Pytanie Juliet nie oznacza, że ma niski szacunek (choć może tak być w życiu); to po prostu kolejny if
, jak fragmenty 23 i 37. Och, prawie zapomniałem: to się tłumaczy if (Juliet == -2)
.
Długość 44 fragmentu kodu
You are as evil as the square root of Romeo!
Tak, pierwiastki kwadratowe są złe, nie wiedziałeś? W każdym razie ta instrukcja jest wystarczająco prosta, aby zrozumieć, co robi: przypisuje „znak” wypowiedzianej wartości pierwiastkowi kwadratowemu wartości przechowywanej w Romeo.
Długość 45 fragmentu kodu
Hamlet:
Art thou more cunning than the Ghost?
Snippet 37 poprawnie napisany z postacią, która mówi wiersz.
Długość 46 fragmentu kodu
the product of a rural town and my rich purse.
Dobra ... zresztą SPL może być jedynym językiem na świecie, który pozwala pomnożyć miasta za pomocą torebek. Oznacza to (2*1)*(2*1)
, że jeśli się nie mylę, jest to równe 4
.
Długość 47 fragmentu kodu
Romeo:
Speak your mind.
Juliet:
Speak YOUR mind!
Dam ci to: może to być jeden z najdziwniejszych dialogów w historii. Ale to właśnie dostajesz, gdy wybierasz dziwny język do zaprezentowania. W skrócie Romeo i Julia mówią sobie nawzajem, aby przedstawili swoje wartości.
Długość 48 fragmentu kodu
You lying fatherless useless half-witted coward!
Tłumaczenia go bezpośrednio 2*2*2*2*(-1)
. -16
, dobrze?
Długość 49 fragmentu kodu
Scene V: Closure.
Hamlet:
Speak your mind!
[Exeunt]
Przykład zakończenia programu w SPL. Możesz zadeklarować scenę specjalnie dla niego (chociaż nie jest to wymagane), następnie Hamlet prosi inną „postać” o podanie swojej wartości, a następnie wszyscy opuszczają scenę. I tak, wszyscy muszą zejść ze sceny.
Długość 50 fragmentu kodu
Othello, a young squire.
Lady Macbeth, an old fart.
Więcej prezentacji „postaci”, przed prawidłowymi instrukcjami. Jak zawsze, jedyną rzeczą, która ma znaczenie dla kompilatora to Othello
i Lady Macbeth
tak reszta linii jest do wzięcia ...
Jeszcze jedno: „postacie” nie muszą być ze sobą powiązane, aby pojawić się w programie SPL - dzięki temu możesz mieć Romeo, Othello i Hamleta w tej samej grze.
Factoid (pół wieku tych rzeczy? Uff! Po tym, myślę, że nienawidzę Williama Szekspira ...)
Tłumacz SPL na C, wspomniany przed chwilą i opracowany przez twórców SPL, był oparty na Flex i Bison .
Długość 51 fragmentu kodu
Othello:
Recall your great dreams. Speak your mind!
(Mam dość Romea, Julii i Hamleta ... przynieśmy Othello, dla odmiany!)
Recall
, jak można się domyślić, jest tutaj kluczem. „Postać”, do której zwraca się Othello, pobierze wartość ze swojego stosu, przyjmie tę wartość, a następnie ją wyśle.
Długość 52 fragmentu kodu
Thou art as pretty as the sum of thyself and my dog!
Kolejna suma. Ziewać. Zakładając, że ten adresowany jest do Hamleta, oznacza to Hamlet = Hamlet + 1
. Lub Hamlet += 1
. Lub Hamlet++
.
Długość fragmentu 53
Romeo:
You are as vile as the sum of me and yourself!
Ach, tak, coś, o czym wcześniej zapomniałem: mówiące „postacie” mogą się wymieniać na własnych liniach.
Długość 54 fragmentu kodu
Juliet:
Is the sum of Romeo and me as good as nothing?
Kolejny przykład poprzedniego fragmentu kodu, dołączony do warunku. Więc mamy tutaj if (Romeo + Juliet == 0)
.
Długość 55 fragmentu kodu
Juliet:
You are as lovely as the sweetest reddest rose.
Tutaj Julia chwali „bohatera”, z którym rozmawia (załóżmy, że to Romeo, ze względu na Szekspira), oświadczając, że ma 4 lata. Tak, kolejne przypisanie wartości.
Długość 56 fragmentu kodu
Othello:
You lying fatherless useless half-witted coward!
Snippet 48 poprawnie wykonany, z „postacią”. Jeśli jesteś zbyt leniwy, aby przewijać w górę (tak jak ja), oznacza to, że obrażany otrzymuje wartość -16.
Długość 57 fragmentu kodu
Romeo:
If not, let us return to Act I. Recall thy riches!
Wyjaśniłem już, w jaki sposób warunki działają na SPL ogólnie; potrzebna jest jednak bardziej szczegółowa analiza. Nie mamy else
tutaj: na przykład, w tym przykładzie, jeśli warunek się nie powiedzie, program powróci do aktu I; ale gdyby to była prawda, kontynuowałaby do następnej instrukcji, czyli Recall
pop-upu ze stosu, to znaczy.
Długość 58 fragmentu kodu
Romeo:
You are as disgusting as the square root of Juliet!
Chwytanie fragmentu 44 i prezentowanie sposobu prezentacji instrukcji. Gdyby to był dialog między Romeo i Othello, moglibyśmy przetłumaczyć to na Javę jako Othello = Math.sqrt(Juliet)
.
Długość 59 fragmentu kodu
Othello:
You are as vile as the sum of yourself and a toad!
OK, jeśli Othello rozmawia z Romeo, byłoby to równoważne z Romeo+(-1)
; Romeo--
w skrócie. Całkiem proste, prawda? To SPL dla ciebie.
Długość 60 fragmentu kodu
Is the quotient between the Ghost and me as good as nothing?
W skrócie, if (The Ghost/Hamlet == 0)
zakładając, że „ja” należy do Hamleta.
Długość 61 fragmentu kodu
Thou art as handsome as the sum of yourself and my chihuahua!
Kiedy oderwasz warstwy i warstwy słów i obelg, zauważysz, że SPL jest prawie podstawową rzeczą, bez fajnych funkcji i innych rzeczy. Mamy więc mnóstwo funkcji arytmetycznych na ciele programu. Więc jeśli ten adresowany byłby do Julii, byłby to odpowiednik Juliet++
.
Długość fragmentu 62
twice the difference between a mistletoe and a oozing blister!
Tak, tak, więcej operacji arytmetycznych. Z grubsza te 62 bajty SPL można przetłumaczyć 2*(1-2*(-1))
. To byłby niesamowity język golfowy, prawda? Dobrze.
Długość 63 fragmentu kodu
You lying stupid fatherless rotten stinking half-witted coward!
Fragment 48 wyprowadzane -16, ten jest równa -64: 2*2*2*2*2*2*(-1)
.
Długość 64 fragmentu kodu
your coward sorry little stuffed misused dusty oozing rotten sky
Z tego, co rozumiem na temat SPL, jest to całkowicie uzasadnione. Masz wiele obraźliwych przymiotników, które stanowią rzeczownik „pozytywny”. Ponieważ przymiotniki nie mają specjalnego rozróżnienia, czy są ujemne, czy nie (ich jedyną wartością jest pomnożenie liczby po ich prawej stronie przez dwa), możemy mieć całkowicie głupie zdania takie jak ten. Co odpowiada 256. Ponieważ 2*2*2*2*2*2*2*2*1=256
.
Długość 65 fragmentu kodu
You are nothing! You are as vile as the sum of thyself and a pig.
Hmm, tyle nienawiści, prawda? To, co mamy tutaj, jest równoważne y=0; y=y+(-1);
Prawdopodobnie mógł zostać „zagrany w golfa” You are a pig!
, ale heh.
Długość fragmentu 66
You are as beautiful as the difference between Juliet and thyself.
Więc odejmij Juliet od siebie, heh? Ten jest dość prosty do odkodowania: Romeo=Juliet-Romeo;
zakładając, że rozmawia się z Romeo.
Długość 67 fragmentu kodu
Juliet:
Am I better than you?
Romeo:
If so, let us proceed to Act V.
Jak większość warunków działa na SPL. Testujesz wyrażenie i, jeśli jest to prawda (lub nie: patrz fragment 33), przeskakujesz do innej części programu; w przeciwnym razie przejdziesz do następnego zdania.
Długość 68 fragmentu kodu
The Ghost:
You are as small as the sum of yourself and a stone wall!
Tak, tak, robię się trochę monotonna. Ale SPL jest taki. Jak powiedziałem nieco wcześniej, jego wyrażenia są mieszanką operacji arytmetycznych. Jest to zatem kolejna inkrementacja - ponieważ stone wall
jest neutralnym „rzeczownikiem”.
Długość 69 fragmentu kodu
Thou art as disgusting as the difference between Othello and thyself!
Zamiast sumy mamy odejmowanie między dwiema postaciami, Othello i tym, z kim się rozmawia.
Długość 70 fragmentu kodu
You are as handsome as the sum of Romeo and his black lazy squirrel!
Wracamy do dodatków, tak - zadzwoń do mnie formalnie, heh. Tłumaczymy to na Romeo + 2*2*1
.
Długość 71 fragmentu kodu
Scene I: Dialogues.
[Enter Juliet]
Othello:
Speak your mind!
[Exit Juliet]
Scena może być tak mała jak ta. Juliet
wchodzi na scenę, Othello mówi jej, aby przekazała zapisaną wartość, a następnie ponownie schodzi ze sceny.
Długość 72 fragmentu kodu
twice the difference between a mistletoe and an oozing infected blister!
Jeszcze jedna operacja arytmetyczna - ponieważ SPL jest na nich zagadką. Możemy to przetłumaczyć na 2*(1-2*2*(-1))
.
Długość 73 fragmentu kodu
You are nothing! Remember me. Recall your unhappy story! Speak your mind!
Cztery instrukcje z rzędu ?! Właściwie jestem z siebie dumny. W każdym razie, załóżmy, że jest to dialog między Romeo i Julią (a on mówi): oznacza to, że wartość Julii zaczyna się od 0; następnie Juliet wepchnie wartość Romea do stosu pamięci, wrzuci go i wyśle we wprowadzonej formie. Proste, prawda?
Długość 74 fragment
You are as sweet as the sum of the sum of Romeo and his horse and his cat!
Tak, tak, nudny przykład, wiem. Ale to jest X = (Romeo + 1) + 1
.
Długość 75 fragmentu kodu
Is the remainder of the quotient between Othello and me as good as nothing?
Cóż, jest to całkiem proste. Jeśli twoje umiejętności dekodowania są nieprawidłowe, przekłada się to na if (Othello % X == 0)
.
Długość 76 fragmentu kodu
Thou art as rich as the sum of thyself and my dog! Let us return to scene I.
Skok z fragmentu 26 z wyrażeniem przed nim. A goto
na SPL nie zawsze znajduje się w pobliżu warunku, może tak być - i, oczywiście, tego typu goto
zawsze będzie można znaleźć na końcu aktu lub sceny, ponieważ instrukcje po nim nigdy nie zostaną skompilowane / wykonane. Pierwsza instrukcja jest dość prosta: x=x+1
.
Długość 77 fragmentu kodu
[Exit Hamlet]
[Enter Romeo]
Juliet:
Open your heart.
[Exit Juliet]
[Enter Hamlet]
Mamy na scenie Juliet i Hamleta; ale potrzebujemy wartości z Romeo. Tak więc, aby oszczędzić kompilatorowi przed bardzo nieprzyjemnym bólem głowy, najpierw usuwamy Hamleta ze sceny (chociaż to mogła być Juliet), mówimy Romeo, aby wszedł na scenę, Juliet daje mu instrukcję, aby wyprowadził numer (patrz objaśnienie fragmentu 21), a następnie Romeo schodzi ze sceny i Hamlet wraca. Całkiem proste i proste.
Długość 78 fragmentu kodu
The Ghost:
Speak thy mind.
Lady Macbeth:
Listen to thy heart! Remember thyself.
Tak więc Duch (zmarły ojciec Hamleta) mówi Lady Makbet, aby przekazała swoją wartość, podczas gdy rozkazuje Duchowi odczytać liczbę i wcisnąć ją na stos.
Translate[Scale[Rectangle, 80], {0, 0, 100}]
czy wielkie słowoRectangle
pojawiłoby się unoszące się przed monitorem?