Aktualizacja: Zwycięzca został zdecydowany, ale wyzwanie jeszcze się nie skończyło!
Wreszcie, prawie 3 miesiące po pierwszym pytaniu, ktoś pozostał ostatnim odpowiedzią przez ponad tydzień! Gratulacje dla jimmy23013 z odpowiedzią P1eq!
Nadal istnieją jednak lewy 8 znaków: 48KSaclw
. Jeśli ktoś jest naprawdę ambitny, może spróbować z tymi: D
Wielkie dzięki dla wszystkich, którzy wzięli udział, szczególnie tych z was, którzy utrzymywali konkurs tak długo z wieloma odpowiedziami, zwłaszcza KennyTM z ogromną liczbą 25 odpowiedzi !!
Ponadto, dzięki każdemu, kto aktualizował listę odpowiedzi, była to świetna pomoc :) (zwłaszcza, że od kilku miesięcy jestem z dala od SE: P).
Oryginalne pytanie:
W 2005 r. Amerykański Instytut Filmowy wyprodukował AFI 100 lat ... 100 cytatów filmowych , listę najlepszych cytatów w amerykańskim kinie. Tutaj są wymienione dokładnie tak, jak powinny być użyte w tym wyzwaniu:
(answer 6) 1. "Frankly, my dear, I don't give a damn." - Rhett Butler
(answer 7) 2. "I'm gonna make him an offer he can't refuse." - Vito Corleone
(answer 5) 3. "You don't understand! I coulda had class. I coulda been a contender. I could've been somebody, instead of a bum, which is what I am." - Terry Malloy
(answer 3) 4. "Toto, I've a feeling we're not in Kansas anymore." - Dorothy Gale
5. "Here's looking at you, kid." - Rick Blaine
(answer 2) 6. "Go ahead, make my day." - Harry Callahan
(answer 11) 7. "All right, Mr. DeMille, I'm ready for my close-up." - Norma Desmond
(answer 8) 8. "May the Force be with you." - Han Solo
(answer 12) 9. "Fasten your seatbelts. It's going to be a bumpy night." - Margo Channing
(answer 13) 10. "You talking to me?" - Travis Bickle
(answer 16) 11. "What we've got here is failure to communicate." - Captain
(answer 15) 12. "I love the smell of napalm in the morning." - Lt. Col. Bill Kilgore
(answer 4) 13. "Love means never having to say you're sorry." - Jennifer Cavilleri Barrett
14. "The stuff that dreams are made of." - Sam Spade
(answer 18) 15. "E.T. phone home." - E.T.
(answer 20) 16. "They call me Mister Tibbs!" - Virgil Tibbs
17. "Rosebud." - Charles Foster Kane
(answer 10) 18. "Made it, Ma! Top of the world!" - Arthur "Cody" Jarrett
(answer 17) 19. "I'm as mad as hell, and I'm not going to take this anymore!" - Howard Beale
(answer 25) 20. "Louis, I think this is the beginning of a beautiful friendship." - Rick Blaine
(answer 26) 21. "A census taker once tried to test me. I ate his liver with some fava beans and a nice Chianti." - Hannibal Lecter
(answer 9) 22. "Bond. James Bond." - James Bond
(answer 22) 23. "There's no place like home." - Dorothy Gale
(answer 29) 24. "I am big! It's the pictures that got small." - Norma Desmond
25. "Show me the money!" - Rod Tidwell
(answer 31) 26. "Why don't you come up sometime and see me?" - Lady Lou
(answer 27) 27. "I'm walking here! I'm walking here!" - "Ratso" Rizzo
(answer 14) 28. "Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund
(answer 28) 29. "You can't handle the truth!" - Col. Nathan R. Jessup
(answer 23) 30. "I want to be alone." - Grusinskaya
(answer 30) 31. "After all, tomorrow is another day!" - Scarlett O'Hara
(answer 1) 32. "Round up the usual suspects." - Capt. Louis Renault
(answer 24) 33. "I'll have what she's having." - Customer
(answer 36) 34. "You know how to whistle, don't you, Steve? You just put your lips together and blow." - Marie "Slim" Browning
(answer 19) 35. "You're gonna need a bigger boat." - Martin Brody
(answer 39) 36. "Badges? We ain't got no badges! We don't need no badges! I don't have to show you any stinking badges!" - "Gold Hat"
(answer 40) 37. "I'll be back." - The Terminator
(answer 33) 38. "Today, I consider myself the luckiest man on the face of the earth." - Lou Gehrig
(answer 37) 39. "If you build it, he will come." - Shoeless Joe Jackson
(answer 43) 40. "My mama always said life was like a box of chocolates. You never know what you're gonna get." - Forrest Gump
(answer 34) 41. "We rob banks." - Clyde Barrow
(answer 38) 42. "Plastics." - Mr. Maguire
43. "We'll always have Paris." - Rick Blaine
(answer 49) 44. "I see dead people." - Cole Sear
(answer 21) 45. "Stella! Hey, Stella!" - Stanley Kowalski
(answer 32) 46. "Oh, Jerry, don't let's ask for the moon. We have the stars." - Charlotte Vale
(answer 35) 47. "Shane. Shane. Come back!" - Joey Starrett
(answer 42) 48. "Well, nobody's perfect." - Osgood Fielding III
(answer 51) 49. "It's alive! It's alive!" - Henry Frankenstein
(answer 41) 50. "Houston, we have a problem." - Jim Lovell
(answer 45) 51. "You've got to ask yourself one question: 'Do I feel lucky?' Well, do ya, punk?" - Harry Callahan
(answer 55) 52. "You had me at "hello."" - Dorothy Boyd
(answer 46) 53. "One morning I shot an elephant in my pajamas. How he got in my pajamas, I don't know." - Capt. Geoffrey T. Spaulding
(answer 44) 54. "There's no crying in baseball!" - Jimmy Dugan
(answer 59) 55. "La-dee-da, la-dee-da." - Annie Hall
(answer 60) 56. "A boy's best friend is his mother." - Norman Bates
(answer 47) 57. "Greed, for lack of a better word, is good." - Gordon Gekko
(answer 56) 58. "Keep your friends close, but your enemies closer." - Michael Corleone
(answer 48) 59. "As God is my witness, I'll never be hungry again." - Scarlett O'Hara
(answer 50) 60. "Well, here's another nice mess you've gotten me into!" - Oliver
(answer 65) 61. "Say "hello" to my little friend!" - Tony Montana
(answer 66) 62. "What a dump." - Rosa Moline
(answer 52) 63. "Mrs. Robinson, you're trying to seduce me. Aren't you?" - Benjamin Braddock
(answer 61) 64. "Gentlemen, you can't fight in here! This is the War Room!" - President Merkin Muffley
(answer 68) 65. "Elementary, my dear Watson." - Sherlock Holmes
(answer 64) 66. "Take your stinking paws off me, you damned dirty ape." - George Taylor
(answer 53) 67. "Of all the gin joints in all the towns in all the world, she walks into mine." - Rick Blaine
(answer 72) 68. "Here's Johnny!" - Jack Torrance
(answer 71) 69. "They're here!" - Carol Anne Freeling
(answer 73) 70. "Is it safe?" - Dr. Christian Szell
(answer 54) 71. "Wait a minute, wait a minute. You ain't heard nothin' yet!" - Jakie Rabinowitz/Jack Robin
(answer 77) 72. "No wire hangers, ever!" - Joan Crawford
(answer 67) 73. "Mother of mercy, is this the end of Rico?" - Cesare Enrico "Rico" Bandello
(answer 70) 74. "Forget it, Jake, it's Chinatown." - Lawrence Walsh
(answer 74) 75. "I have always depended on the kindness of strangers." - Blanche DuBois
(answer 78) 76. "Hasta la vista, baby." - The Terminator
(answer 75) 77. "Soylent Green is people!" - Det. Robert Thorn
(answer 76) 78. "Open the pod bay doors, HAL." - Dave Bowman
(answer 80) 79. Striker: "Surely you can't be serious." Rumack: "I am serious...and don't call me Shirley." - Ted Striker and Dr. Rumack
(answer 84) 80. "Yo, Adrian!" - Rocky Balboa
(answer 81) 81. "Hello, gorgeous." - Fanny Brice
(answer 83) 82. "Toga! Toga!" - John "Bluto" Blutarsky
(answer 63) 83. "Listen to them. Children of the night. What music they make." - Count Dracula
(answer 87) 84. "Oh, no, it wasn't the airplanes. It was Beauty killed the Beast." - Carl Denham
(answer 88) 85. "My precious." - Gollum
(answer 86) 86. "Attica! Attica!" - Sonny Wortzik
(answer 57) 87. "Sawyer, you're going out a youngster, but you've got to come back a star!" - Julian Marsh
(answer 82) 88. "Listen to me, mister. You're my knight in shining armor. Don't you forget it. You're going to get back on that horse, and I'm going to be right behind you, holding on tight, and away we're gonna go, go, go!" - Ethel Thayer
(answer 58) 89. "Tell 'em to go out there with all they got and win just one for the Gipper." - Knute Rockne
(answer 90) 90. "A martini. Shaken, not stirred." - James Bond
(answer 85) 91. "Who's on first." - Dexter
(answer 62) 92. "Cinderella story. Outta nowhere. A former greenskeeper, now, about to become the Masters champion. It looks like a mirac...It's in the hole! It's in the hole! It's in the hole!" - Carl Spackler
(answer 69) 93. "Life is a banquet, and most poor suckers are starving to death!" - Mame Dennis
(answer 89) 94. "I feel the need - the need for speed!" - Lt. Pete "Maverick" Mitchell and Lt. Nick "Goose" Bradshaw
(answer 79) 95. "Carpe diem. Seize the day, boys. Make your lives extraordinary." - John Keating
(answer 91) 96. "Snap out of it!" - Loretta Castorini
(answer 92) 97. "My mother thanks you. My father thanks you. My sister thanks you. And I thank you." - George M. Cohan
(answer 93) 98. "Nobody puts Baby in a corner." - Johnny Castle
(answer 94) 99. "I'll get you, my pretty, and your little dog, too!" - Wicked Witch of the West
(answer 95) 100. "I'm the king of the world!" - Jack Dawson
(Zachowaj swobodę oznaczania cytatów jako używanych).
Istnieje 95 znaków ASCII do wydrukowania (kody szesnastkowe od 20 do 7E), czyli prawie 100:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
W tym wyzwaniu użytkownicy naprzemiennie piszą programy, które za każdym razem drukują jeden z cytatów z filmu przy użyciu nowego języka programowania i mniejszego podzbioru drukowanego ASCII.
Jak to działa
Już przesłałem pierwszą odpowiedź i oznaczyłem ją jako 95, ponieważ w moim programie mogłem używać wszystkich 95 drukowanych znaków ASCII. Jest to program w języku Python, który drukuje setny cytat "I'm the king of the world!" - Jack Dawson
, na standardowe wyjście.
Druga osoba, która musi odpowiedzieć, musi wybrać nowy cytat, nowy język programowania i jeden z 95 drukowanych znaków ASCII, które należy wykluczyć z kodu. Muszą napisać program bez użycia tego znaku, który wypisze wybrany cytat na standardowe wyjście. Powinni oznaczyć swoją odpowiedź jako 94, ponieważ mieli 94 drukowane znaki ASCII do pracy (pomyśl o tym jak o odliczaniu).
Trzecia osoba, która udzieli odpowiedzi, musi wybrać cytat i język, który nie był używany w żadnej wcześniejszej odpowiedzi (w tym przypadku tylko 95 i 94), a także nowy znak, który należy pominąć. Nie mogą używać tego znaku ani żadnych wcześniej zabronionych znaków w swoim kodzie. Oznaczają swoją odpowiedź jako 93.
Ten proces odpowiadania trwa w ten sposób, dopóki wszystkie drukowalne znaki ASCII nie zostaną zabronione i ktoś nie udzieli odpowiedzi „1” lub, co bardziej prawdopodobne, nikt nie będzie w stanie dowiedzieć się, jak odpowiedzieć ponownie.
Zasady (przeczytaj uważnie)
Ważne jest, aby zrozumieć, że tylko jedna osoba może odpowiedzieć na raz, a każda odpowiedź zależy od poprzedniej. Nigdy nie powinny być dwie odpowiedzi z tym samym numerem, cytatem lub językiem programowania.
Jednocześnie muszą zostać przesłane sprzeczne odpowiedzi i to jest w porządku. Jeśli tak się stanie, osoba, która technicznie odpowiedziała później, powinna szybko (jak 10 minut lub mniej) usunąć swój post lub edytować go, aby stał się następną odpowiedzią. W przeciwnym razie nie edytuj kodu, chyba że jest to naprawdę konieczne . Zaleca się edytowanie postów tylko w celu poprawienia formatowania.
Szczegółowe zasady
- Użytkownik, który właśnie odpowiedział, musi odczekać co najmniej godzinę, zanim odpowie ponownie.
- Użytkownik może nie odpowiadać dwa razy z rzędu.
- Wybrany numer oferty nie może znajdować się więcej niż 5 poniżej numeru odpowiedzi. Na przykład odpowiedź 90 może wybrać dowolną niewykorzystaną ofertę od liczby 85 do 100. Pozostawia to lepszą ofertę dla trudniejszych odpowiedzi. Poza tą regułą numeracja cytatów jest nieistotna.
- Programy mogą zawierać tylko tabulatory, znaki nowej linii oraz znak ASCII do wydruku, które do tej pory nie były zabronione. (Karty i znaki nowej linii nigdy nie są zabronione).
- Nie ma ograniczenia długości programu, ale w twoim programie może nie być więcej niż 64 tabulatory lub 64 znaki nowej linii.
- Języki są uznawane za odrębne, jeśli są powszechnie używane pod różnymi nazwami. Różne wersje języków programowania nie są uważane za odrębne. (Języki znaczników, takie jak HTML, się liczą, ale preferowane są języki pełne). Twój język musiał istnieć przed rozpoczęciem tego konkursu.
- Jeśli twój język nie ma standardowego wyjścia, użyj podobnego mechanizmu wyprowadzania tekstu.
- Twój program nie powinien pobierać danych wejściowych ani powodować nieoczekiwanych efektów ubocznych, takich jak tworzenie plików.
Upewnij się, że Twój program jest prawidłowy. Powinien być w stanie działać jako pełny program, nie tylko w środowisku REPL .
Zauważ, że „cytat”, który musisz wydrukować, zawiera znaki cudzysłowu i osobę, która je wypowiedziała (ale nie numer cytatu). Twój program powinien sporządzać wyłącznie ofertę dokładnie tak, jak jest ona wyświetlana na powyższej liście (nowa linia wiodąca / końcowa jest w porządku).
Formatowanie
Sformatuj swoje odpowiedzi w ten sposób, {stuff in curly braces}
należy je wymienić:
#{answer number}. {language}, uses no <code>{the forbidden character you just chose}</code>
{program}
Output is quote {quote number}:
{program output, should be identical to quote}
[Previously forbidden:]({url of previous answer (hit "share" just below it)}) <code>{the previous answerer's forbidden character followed by his previously forbidden list}</code>
{anything else you wish to say}
Te <code>
znaczniki mogą być zastąpione backticks ( `
), o ile nie występuje grawis w nich.
Punktacja
Wspólnym celem tego wyzwania jest jak najdłuższe otrzymywanie odpowiedzi.
Oficjalnym zwycięzcą jest użytkownik, który odpowiada ostatni, po tygodniu bez dodatkowych odpowiedzi. Przyjmuję ich ostatnią odpowiedź.
Lista odpowiedzi (od najnowszych)
4
Progresywny Unarya
Bueuec
UdageS
1L_a105w
BinaryfuckK
Subskinl
23
n
P1eqt
Addleq9
Kod maszynowy x86r
BSMD
ShaFuck 0.2u
VillmarkO
Kod maszynowy PDP-11f
ProgFki
NUMPADH
Tri2
ferNANDoP
Pointym
SubleqG
FlogScript?
Nqubl%
Glif!
3varq
ETAj
BrainSpace 1.0V
Bezsenność`
asdf6
Leniwy K.C
! Py! Batch 1.5T
KurwaF
PoGoR
Golunarb
Kod maszynowy 6502 + Monitor systemu Apple IIY
ZagłówkiI
BRBU
BraincrashZ
EkstatycznyM
Gospodarstwo rolneA
LewatywaL
DOSTOSOWAĆ$
BeatnikN
Rebmug
DupdogB
GammaplexJ
Kurwa 45
A0A0W
gs2:
l33th
TonocoE
Malbolgek
D1ffe7e45e1
złoQ
CaneCoded
Trawa#
URSL|
Groteskax
Emmental~
Applesoft BASIC^
Naprzód7
Kod maszynowy 80386 + DOS_
Argh!v
Rexx}
Alpha betao
Super Stack!e
Pytz
Zwykły TeX>
WASD]
Powłoka POSIX&
Żargon, bełkot/
GolfScript*
Zespół x86_640
AppleScriptX
Deadfish ~,
Łyżka-
oOo KOD=
jot@
Matematyka.
Perl+
DNA #<
Liczba Pi)
Postscriptum[
ABCs
dc{
HTML(
Unary;
Oo!'
CJamPHP
"
Brainfuck\
Cudowny3
C ++y
Rubinp
JavaScript- Pyton
(Możesz edytować, jeśli jest niepoprawny lub nieaktualny)
To pytanie działa najlepiej, gdy sortujesz według „najstarszych”.
UWAGA: Podobnie jak moje ostatnie pytanie , jest to test nowego rodzaju wyzwania, w którym każda odpowiedź zależy od ostatniego i zwiększa się na trudnym poziomie. Przyjdź na czat lub meta, aby przedyskutować pytanie lub ogólny pomysł.
źródło
Odpowiedzi:
8. P1eq (używa nie
n
)Do poprawnego działania wymaga 64-bitowej platformy innej niż Windows, podobnie jak odpowiedź Addleq. Użył tej samej sztuczki dla -1.
Ma 64 nowe wiersze i 57 zakładek.
Jest powolny i zakończył się na moim komputerze około 18 minut.
Wyjście jest cytatem 8:
Wcześniej zabronione :
Pozostały:
4
8
K
S
a
c
l
w
P1eq jest podobny do Subleq i Addleq, z instrukcją B = A + 1 i skacze, jeśli B nie zostanie zmienione.
Wyjaśnienie:
Ten program zwiększa * 444 i * 484 razem i resetuje * 444, gdy staje się pewną wartością. Gdy * 484 równa się danym, * 444 będzie resztą danych podzieloną przez pewną wartość.
Tylko 6 komórek pamięci w kodzie można adresować bezpośrednio za pomocą 4 i 8. Muszę ponownie użyć niektórych z nich. Spowodowało to również, że niektóre operacje nie były w pożądanej kolejności, takie jak użycie niezainicjowanych zmiennych. Ale mogę po prostu odrzucić to, co zostanie zwrócone za pierwszym razem w pętli i zainicjować po tym.
Niektóre inne języki okazały się interesujące, ale nie nadają się już do użytku:
.
)*
)A
ale rozróżnia wielkość liter, niestety) znalazłem go w japońskiej Wikipedii.Teraz pozostały mi 3 języki.
Dla każdego, kto chce napisać więcej odpowiedzi, oto kilka wskazówek, których należy szukać:
Mówiąc dokładniej, miałem:
źródło
90. Brainfuck, używa nie
"
Wynik to cytat 90:
Wcześniej zabronione:
py3\
Ktoś musiał to zrobić, zanim którekolwiek
.+-
zostanie zabronione.Wypróbuj tutaj: http://ideone.com/dlu8VE
źródło
"
? To rodzaj środka dla wszystkich ludzi po tobie.51. Malbolge (używa nie
E
)(Newlines są tylko dla wyjaśnienia, a nie częścią źródła.)
Wyjście jest cytatem 49:
Wcześniej zabronione :
"#&'()*+,-./0137;<=>@[\]^_ deopQksvxXyz{|}~
Pozostałe postacie:
!
$
%
:
?
`
2
456
89
ABCD
FGHIJKLMNOP
RSTUVW
YZ
abc
fghij
lmn
qr
tu
w
Możesz go uruchomić za pomocą referencyjnego interpretera Malbolge .
źródło
10. Kod maszynowy x86, wykorzystuje nr
9
Kiedy zdałem sobie sprawę, że pozostałe znaki zawierają kody dla „Dec BX” i „Push BX”, doszedłem do wniosku, że program x86 jest nadal możliwy.
Link do kodu i pliku .com
Kod wygląda na znacznie dłuższą wersję tego:
Kod skompresowany
bzip2
i zakodowany w formacie base-64 jest następujący:Wynik to cytat 18:
Wcześniej zabronione :
Pozostałe postacie:
4
8
K
S
a
c
l
n
t
w
Jest to kod samomodyfikujący, który tworzy kod samomodyfikujący, oto jak to działa:
Tekst jest najpierw kodowany przez wprowadzenie ciągów „4” zakończonych „8”, które odwzorowują instrukcje, które są efektywnymi operacjami NOP dla tego programu. Następnie BX jest zmniejszane („K”), dopóki nie będzie miało wartości, gdzie kod wydruku skończy się na stosie. Jest to wciskane 8 razy („S”), a następnie wykonywane jest Pop All, „a”, aby skonfigurować SI i DI na później. BX jest następnie wielokrotnie zmniejszany i wypychany w celu wprowadzenia dowolnych wartości programu do drukowania na stosie (bajt niski) wraz z bajtem śmieciowym (bajt wysoki). Następnie długa sekwencja dekrementacji powoduje, że BX osiąga wartość 0xAAAD, czyli dwie 1-bajtowe instrukcje „Załaduj słowo” i „Zapisz bajt”. Każda para tych instrukcji usunie jeden bajt śmieci z kodu wydruku. Instrukcje te są wypychane 28 razy (rozmiar programu do drukowania), a reszta pliku jest wypełniona większą liczbą instrukcji zmniejszania, aby działały jako NOP. Te NOP będą wykonywane do momentu trafienia w obszar pamięci używany przez stos, który zostanie nadpisany kodem kondensacyjnym. Kod kondensacyjny jest wykonywany, usuwając bajty śmieci w kodzie na stosie (wskazane przez SI i DI, które zostały wcześniej ustawione). Na koniec, gdy kod kondensacji jest gotowy, program drukujący został pomyślnie zapisany w pamięci przy następnej instrukcji do wykonania.
Kod zestawu do generowania kodu maszynowego (FASM)
źródło
IMUL
określonego typu), więc można ją nazwać innym „językiem”. Nawet nie próbowałem sprawdzić, czy x86 jest nadal możliwe na tym etapie - najwyraźniej tak jest!61. Kod maszynowy 80386 + DOS, używa nr
7
Wynik jest cytatem 64:
Wcześniej zabronione:
"'&()*+-,./\03;<=>@X_[sovy pez]{}
Utworzenie pliku wykonywalnego, który używa tylko ASCII do wydruku, nie jest łatwym zadaniem. Na szczęście niewiele postaci było zabronionych przez poprzednie odpowiedzi, więc potrzebowałem tylko kilku łatek tu i tam.
Aby uruchomić ten program, skopiuj go do pliku z rozszerzeniem
.com
i uruchom (linie podziału używają formatu DOS0d 0a
;TAB
w kodzie jest jeden znak). Szkoda, że współczesne 64-bitowe systemy Windows nie obsługują kodu 16-bitowego; do uruchomienia kodu potrzebny jest 32-bitowy system Windows lub DOSBox .Użyłem
debug.com
debugera DOS do opracowania kodu. Aby „złożyć” „kod źródłowy”, przekieruj go do debuggera. W DOSBox:Kod źródłowy:
Niektóre uwagi:
0x41
,0x23
oraz0x24
. Wybrałem maski, które nie były zabronione.0xcd
i0xc3
. Są również maskowane XOR, więc kod musi się zmodyfikować.k
jest tutaj bardzo ważny: kodujeIMUL
instrukcję mnożenia. Używam go do uzyskiwania stałych wartości: na przykład stała0x216b
, po pomnożeniu0x45
, daje użyteczną stałą0x01d7
, która jest wskaźnikiem (z przesunięciem, jak opisano powyżej) do kodu, który należy załatać. W podobny sposób maska łatania jest0x2132*0x36=0x8c
(nie przeszkadza tam obcięcie).and ax, 2142; and ax, 4221
.ax
nie zmienia się.Edycja: nieużywanie
_
postaci (złe wyczucie czasu w poście) - nie można używaćpop di
, więcdi
teraz znacznie mniej korzystaj z rejestru.źródło
@
jest już zbanowany w 78, proszę wybrać inny symbol.85. HTML5 (używa nie
{
)Wyjście jest cytatem 91.
Wcześniej zabronione :
py3\" ';(
źródło
12. ShaFuck 0.2 (używa nie
D
)Kod źródłowy ma dokładnie 4,784,128 bajtów i zawiera wszystkie dozwolone znaki oprócz
D
. To wygląda jak:tutaj (a × 1017) oznacza znak „a” powtórzony 1017 razy. Plik skompresowany w formacie bzip2 w formacie base64 (247 bajtów) to:
Suma SHA1 oryginalnego pliku powinna wynosić 1250ecf73c61ef93a31c4f7dfaa0a7631ada50bf.
Wyjście jest cytatem 9:
Wcześniej zabronione :
Pozostałe postacie:
4
8
9
K
S
a
c
l
n
r
t
w
ShaFuck to odmiana Brainfuck. Zajmuje każdy 1024-bajtowy fragment, oblicz skrót SHA-1, a następnie użyj 20-bajtowego wyjścia jako programu Brainfuck. Jak wyjaśniono w poście na blogu połączonym z wiki, w wersji v0.2 występuje „luka” polegająca na tym, że wyjście SHA-1 formularza:
Jest zaakceptowane. Pozwala to na bezpośrednią konwersję z komendy „odruchu mózgu” do fragmentu o wielkości 2048 bajtów. Koder używa
a
-z
jako zestawu znaków, który nie jest dla nas odpowiedni. Musimy sami napisać „górnika”. Teraz dostępnych jest 13 prawidłowych postaci. Zakładając, że wyjście SHA-1 jest losowe, jeśli chcemy naprawić pierwsze 3 bajty, odpowiada 3 x log₁₃ (256) ~ 6,5 znaków wejściowych. Dlatego musimy iterować wszystkie ciągi 7 znaków wykonane z tych 13 alfabetów:Możemy szybko uzyskać następujące ekwiwalenty:
Wreszcie mamy prosty koder:
źródło
SUFFIX = 'a' * (1024 - 7)
- na wszelki wypadek1024 - 7
nie zawsze1017
? :-)(1024 - 7)
jest bardziej czytelny.87. Ook !, używa nie
;
Wynik to cytat 84:
Wcześniej zabronione:
py3\" '
źródło
76. oOo CODE , używa nr
-
Wynik jest cytatem 78:
Wcześniej zabronione :
py3\" ';({s[)<+.@=
Nie opublikuję innego odpowiednika / pochodnej BF. Obietnica.
EDYCJA: Zaktualizowałem kod, aby był bardziej czytelny. (lol) Nie wpływa na zabronione postacie.
Użyłem tego narzędzia do wygenerowania mojego czystego BF. Następnie przekonwertowałem go na oOo CODE:
Następnie użyłem tego skryptu Python, aby uzyskać wersję „czytelną” z czystego KODU OOo i tekstu wejściowego:
źródło
9. Addleq (używa nie
t
)Używa
sqasm.cpp
na stronie esolang do złożenia. Do poprawnego działania wymaga 64-bitowej platformy innej niż Windows.Istnieją dokładnie 64 tabulatory i 64 nowe wiersze (bez nowych końcowych wierszy). Uff
Wynik to cytat 22:
Wcześniej zabronione :
Pozostały:
4
8
K
S
a
c
l
n
w
„Addleq” OISC jest podobny do „Subleq”, ale używa dodawania zamiast odejmowania.
Konstruowanie „-1”
Wyjście w Addleq działa poprzez zapis do adresu pamięci -1. Ponieważ wszystkie liczby nieparzyste są zabronione, nie możemy konstruować -1 w zwykły sposób. Możemy jednak oszukać asemblera do utworzenia -1:
Tutaj
sscanf(s, "%d", &ret)
zachowuje się jakret = strtol(s, NULL, 10);
(C11 §7.21.6.2 / 12), a gdy wejście się przepełni,strtol
zwróci LONG_MAX (C11 §7.22.1.4 / 8). Zatem jeślisizeof(long) > sizeof(int)
powinniśmy dostaćret == -1
. Jednak na platformie, którasizeof(long) == sizeof(int)
np. Na platformach 32-bitowych lub Windowsie, otrzymamy 0x7fffffff, co spowoduje, że powyższe rozwiązanie będzie nieprawidłowe.Zapisywanie zakładek za pomocą asemblera
W addleq niskiego poziomu każda instrukcja ma 3 cyfry. Ponieważ mamy tylko budżet 128 białych znaków, musimy wydrukować cały ciąg z instrukcjami 129/3 = 43. Jest to całkowicie niewystarczające, ponieważ najkrótszy cytat (tutaj wybrany) ma 32 znaki.
Niemniej jednak asembler obsługuje notację skróconą:
Reguła nr 2 została zaprojektowana dla „podleq” w celu szybkiego zerowania adresu. Ale dla „addleq” pozwala nam podwoić wartość bez żadnych zakładek.
Pozwalają nam ledwo zmieścić cały program w 129 liczbach.
Tworzenie liczb
Cytat został wybrany, ponieważ jest krótki i ma wiele zduplikowanych znaków. Liczby, które musimy stworzyć to:
Możemy użyć liczb pod adresem 4, 8, 44, 48, 84, 88, .... Zasada nr 1 asemblera już umieściła „9” na * 8 i „45” na * 44, więc po prostu ich użyjemy (dobrze, że są to liczby nieparzyste). Ponadto spróbujemy dopasować „-1”, „8” i „44” do tych adresów, przesuwając obliczenia. Wynikiem jest pierwsza połowa kodu:
Ostatnia linia
Po skonstruowaniu wszystkich liczb możemy wydrukować każdy znak. Ostateczny program ma jednak ponad 67 wierszy, o dwa za dużo. Dlatego musimy połączyć 3 ostatnie linie razem:
Ponieważ linia ma więcej niż 2 cyfry, musimy ręcznie podać trzeci parametr instrukcji. Oznacza to, że handlujemy każdą nową linią na 2 karty. Na szczęście przed kombinacją użyliśmy 60 zakładek, więc końcowy wynik ledwo spełnił wymagania.
źródło
4
i8
były0
i7
.89. PHP, używa nie
Wynik to cytat 94:
Wcześniej zabronione :
py3\"
źródło
'
teraz !!!81. PI , używa nr
<
Wynik jest cytatem 81:
Wcześniej zabronione:
py3\" ';({s[)
Co ? Pi bez
3
?Mój tłumacz tutaj (przepraszam za podstawowy interfejs użytkownika, na podstawie tej odpowiedzi ): http://migl.io/projects/pi/index.php
źródło
79. Perl 5, używa nr
.
Wynik to cytat 95:
Wcześniej zabronione:
py3\" ';({s[)<+
Jako język TMTOWTDI Perl oferuje wiele sposobów na obejście ograniczeń. Metodą użytą tutaj jest skonstruowanie instrukcji
print "that quote"
jako łańcucha i jej ocenie.Chociaż
'
i"
są zbanowane, Perl pozwala dodatkowo na wyrażanie ciągów za pomocąq«…»
iqq«…»
. I chociaż;
jest to zabronione, ponieważ wszystkie stwierdzenia nie są fałszem, moglibyśmy użyćand
do połączenia ze sobą zestawień. Ponieważ wielkimi literamiP
,Y
,S
są nadal dozwolone, możemy umieścićp
,y
,s
do końcowego łańcucha za pomocąlc
funkcji (małymi literami), achr
mogą być wykorzystane, aby umieścić symbole"
i.
źródło
$foo=0
jest oczywiście falsy.) W każdym razie bardzo miło; +1.54. CaneCode (używa nie
Q
)(Nowe linie i spacje nie są konieczne.)
Wynik to cytat 71:
Wcześniej zabronione :
"#&'()*+,-./037;<=>@[\]^_ deopsvxXyz{|}~
CaneCode to kolejna pochodna BF z odwzorowaniem:
Tylko uwaga: Pozostałe postacie to:
!
$
%
:
?
`
12
456
89
ABCDEFGHIJKLMNOP
RSTUVW
YZ
abc
fghijklmn
qr
tu
w
źródło
6. Subskin (nie używa
K
)Wiersz 9 w następującym programie jest zastąpiony przez coś, co można przetestować. Ma 2 końcowe nowe linie i dokładnie 64 nowe linie łącznie.
Aby spełnić kryteria, wiersz 9 należy zastąpić następującą dużą liczbą. Myślę, że powinno to obowiązywać tak samo jak te warianty Unary.
a
. Więc ostatnia cyfra jesta
gdzie k = 0, a tam są 159321460184447640588063043795531819638245990121854536131792918542864566418397339281153516086677425424423723475531974684547855358001230183547851703274577276601612622258171727288003902331619018508731805969660163575803761844794365403871421372122820829226554024584224464882571689865777 z nich.8
.Zauważ, że skonstruowana liczba znajduje się w bazie 16 (ale liczby w powyższym opisie są w bazie 10). Jeśli moje obliczenia są prawidłowe, powinien być taki sam jak oryginalny numer w programie mod 8 * (16 ^ 234-1) / 15. Każda liczba wystarczająco duża i spełniająca to kryterium powinna działać, ale nie wiem, jak zbudować tylko krótszą
4
8
a
c
.Wynik to cytat 1:
z wiodącym i końcowym znakiem nowej linii.
Wcześniej zabronione:
Pozostałe znaki:
4
8
S
a
c
w
.Wyjaśnienie
Subskin to OISC, w którym instrukcja ma odejmować i pomijać następną instrukcję, jeśli wynik jest ujemny. Pierwsze 3 pola w pamięci są mapowane na wskaźnik instrukcji, dane wyjściowe i dane wejściowe. Wskaźnik instrukcji może być używany jako „goto”, a jego odczytanie może dać pewne liczby, które w innym przypadku nie byłyby dostępne przy użyciu tylko użytecznych znaków.
Na początku próbowałem skompresować kod do cyfr w jakiejś bazie. Ale nie mogłem grać w golfa na 64 linie. Więc przełączyłem się na podejście modułowe, które usunęło poziom pętli.
Jest to po prostu największy wspólny algorytm dzielnika. A / B jest wyodrębniane na każdym etapie. Następnie ustaw A = B i B = A mod B i kontynuuj.
Dokładniej, gdy A> B zwiększa bieżące dane, w przeciwnym razie zamienia liczby i przesuwa wskaźnik. Następnie mniejsza liczba jest odejmowana od większej liczby.
W końcu kod samorozpakowujący przesłania coś w pętli i przerywa go, i przechodzi do wyodrębnionego kodu. Wyodrębniony kod jest dość prosty.
Kod
Pokolenie
Załóżmy, że A i B po postępie ekstrakcji wynoszą n i m. Łatwo jest odwrócić ten postęp i uzyskać A i B (zanim zaczną się przydatne dane) w kategoriach n i m. A A = an + bm, B = cn + dm. Ustaw A na dowolną liczbę, która jest wystarczająco duża i może sprawić, że n i m będą dodatnie (i używa tylko dostępnych znaków). n i m można obliczyć za pomocą inwersji modułowej. Następnie B jest określone przez n i m.
Ale nie jest łatwo sprawić, by B składał się tylko z tych postaci. Zastosowałem dodatkowy krok, który powinien wyodrębnić tylko niektóre nieszkodliwe niepotrzebne dane. Tak więc nowy B będzie kA + B, gdzie k jest dodatnią liczbą całkowitą. Łatwo zauważyć, że taki ak istnieje. Ale nie jestem pewien, czy można znaleźć taki, który jest wystarczająco krótki, aby można go było przetestować. I użyłem małego twierdzenia Fermata, aby znaleźć takie, które działa w teorii.
Został mi tylko jeden język # 2.
źródło
78. Mathematica, używa nr
@
Wynik to cytat 76:
Wcześniej zabronione:
py3\" ';({s[)<+.
Wygenerowano tak:
Program jest wtedy:
o wartościach włożonej
n2
,ndiff
,d2
iddiff
i wszystkie przestrzenie usunięte.Mój oryginalny pomysł był w użyciu
ToString
,FromDigits
,IntegerDigits
,Partition
iFromCharacterCode
. Jednak zarównoFromDigits
iIntegerDigits
mas
w nich, które nie zauważyłem.źródło
72. Zestaw x86_64 (nasm), używa nr
*
Wykorzystuje 61 zakładek i 36 nowych linii.
Wynik jest cytatem 68:
Wcześniej zabronione:
py3\" ';({s[)<+.@=-,X0
Używa
write
wywołania systemowego z numerem0x2000001
, który prawdopodobnie działa tylko w systemie OS X. Składanie, łączenie i uruchamianie:źródło
71. GolfScript, używa nie
/
Wynik jest cytatem 69:
Wcześniej zabronione:
py3\" ';({s[)<+.@=-,X0*
Dzięki Peter Taylor wpuścił mnie na kilka dziwactw w GolfScript do konstruowania łańcucha. Po pierwsze, mogę uzyskać pusty ciąg znaków bez cudzysłowów, przypisując (pustą) zawartość STDIN do zmiennej (
?
w tym przypadku). Następnie tworzę zagnieżdżoną tablicę liczb, które, biorąc mod 256, są pożądanymi punktami kodowymi. Dodając wielokrotności 256, mogę uniknąć duplikatów i liczb zawierających0
i3
. Na koniec wciskam pusty ciąg?
i biorę różnicę zestawu symetrycznego. Spłaszcza to tablicę i przekształca ją w ciąg, w którym GolfScript dba tylko o resztę mod 256.Sprawdź to tutaj.
źródło
91. Cudowny , używa nie
\
Wynik to cytat 96:
Wcześniej zabronione :
py3
źródło
95. Python
Dane wyjściowe to cytat 100:
Żadne zabronione.
źródło
73. AppleScript, używa nie
0
(Wszystkie „spacje” są „tabulatorami”, jak dopuszcza OP. Istnieje 25 tabulatorów i 8 nowych linii).
Wynik jest wyceniony 70:
Wcześniej zabronione :
py3\" ';({s[)<+.@=-,X
Tutaj najpierw konstruujemy zmienną,
c
która jest listą kodów ASCII cytatu. W AppleScriptnumber & number
tworzy listę 2-elementową{number, number}
ilist & number
dołącza liczbę do listy, dzięki czemu możemy uniknąć używania{
lub,
. Dodatkowo&
ma niższy priorytet niż*
i/
, dzięki czemu możemy utworzyć całą listę w jednym wierszu, unikając(
lub tworząc zmienne (co marnuje 3 karty).Następnie konwertujemy listę liczb
c
na ciągd
. Ponownie używamy&
tutaj, ponieważstring & string
jest to konkatenacja. AppleScript nie rozróżnia wielkich i małych liter, więc moglibyśmy skorzystaćdiSPlaY
z obejściapys
znaków.źródło
set
i nie udało mi się. Miałem odpowiedź na cytat # 62, ale nie mogę tego teraz użyć; P57. Burleska (nie używa
|
)Nowe wiersze służą wyłącznie wyjaśnieniu, ale zakładki są konieczne. Istnieją 4 zakładki.
Wynik jest cytatem 87:
Wcześniej zabronione :
"'&()*+-,./\037;<=>@_[sovy pezxX]^{}~
Burleska jest podobna do GolfScript, ale zwykle każde polecenie ma 2 znaki. Konstrukcja wygląda następująco:
Burleska obsługuje liczbę całkowitą o dowolnej precyzji, a także umożliwia konwersję do bazy 36. Więc najpierw kodujemy wszystkie małe litery w bazie 36:
Niestety, ta liczba zawiera za dużo 0, 3 i 7, a wszystkie symbole arytmetyczne (
+-*/
) są zakazane ... Zwykle możemy użyć modułu, ale Burleska używa sekwencji, w.%
której kropka jest również niedostępna. Na szczęście operator xor jest dziwnie$$
, więc moglibyśmy spróbować to skonstruować, dodając dwie liczby wolne od 0, 3, 7. To jest powód ogromnej liczby 41224222…Wreszcie możemy wstawić pozostałe symbole, takie jak
,
,itp powrotem do łańcucha. Złą wiadomością jest to, że funkcja „chr” używa sekwencji,
L[
która jest znowu zabroniona! Dobrą wiadomością jest to, że istnieją różne sposoby skonstruowania istniejącego łańcucha (np.??
Tworzy łańcuch wersji"Burlesque - 1.7.3"
zawierający „spację”), a następnie wyodrębnia!!
z niego znak ( ).W inkrementacja również używać niedozwolonych znaków
.+
,.-
jednakże istnieją alternatywy?i
,?d
które mają ten sam efekt. W ten sposób moglibyśmy wygenerować z tego całe spektrum ASCII.źródło
34. Kod maszynowy 6502 + Monitor systemu Apple II (nie używa
b
)(Używa 1 karty)
Wyjście jest cytatem 41:
Wcześniej zabronione :
"#$&'()*+,-./01357:;<=>@[\]^_ ABdeEghIJLMNopQksUvWxXyYzZ{|}~
Pozostałe postacie:
!
%
?
`
2
4
6
89
CD
FGH
K
OP
RST
V
a
c
f
ij
lmn
qr
tu
w
Uruchom na Apple // e (lub emulatorze). Upewnij się, że znak tabulacji jest kopiowany jako tabulator, a nie spacje.
Jest to kombinacja pomysłów kodu maszynowego 80386 + odpowiedzi DOS i mojej wcześniejszej odpowiedzi BASplesoft .
Dla tych, którzy nie są zaznajomieni, Monitor systemu na komputerach Apple II to interpreter / debugger bardzo niskiego poziomu, który pozwala modyfikować pamięć i uruchamiać kod (jeśli korzystasz z interpretera BASIC, możesz wejść do Monitora systemu, wykonując to
CALL -151
). Zwykłym sposobem wprowadzania kodu maszynowego w Monitorze systemu byłoby<addr>: <hex_byte> <hex_byte> ...
uruchomienie kodu za pomocą<addr>G
(G dla „Go”). Wprowadzanie kodu w zwykły sposób wykorzystuje niedozwolone znaki; jednak bufor wejściowy do wprowadzania wiersza tekstu rozpoczyna się w pamięci 0x200. Tak więc jednolinijka mówi Monitorowi Systemu, aby skoczył do 0x262, a następnie osadza kod zgodnie z poniższym ASCII.Pomimo tego, że nie jest językiem ezoterycznym, ograniczenia użytecznych kodów sprawiają, że kod bardziej przypomina pochodną pieprzenia mózgów. Wszystko, co jest dostępne: odczytywanie pamięci (ale nie zapisywanie), zwiększanie i zmniejszanie pamięci, odejmowanie z akumulatora i rozgałęzianie nie na 0. Poprawiono tylko kilka instrukcji: wywołanie procedury Monitor, która wyświetla znak, i powrót aby zakończyć program.
Demontaż Zauważ, że wszystkie wprowadzane znaki mają ustawiony wysoki bit:
źródło
14. Kod maszynowy PDP-11, wykorzystuje nr
O
Wyjście jest cytatem 28:
Wcześniej zabronione :
Pozostałe postacie:
4
8
9
D
K
S
a
c
l
n
r
t
u
w
Kilka szczegółów technicznych:
Aby zweryfikować ten kod, użyłem symulatora Ersatz-11 . Aby uruchomić kod, wpisz kod do pliku
test.pdp
, uruchom symulator i wpisz:Wynik:
Kod źródłowy (wszystkie liczby są w formacie ósemkowym):
Łatwiej jest wyjaśnić, jak to działa od początku do końca. Część wyjściowa wygląda następująco (każda iteracja daje 2 bajty):
Ten kod zawiera wiele zabronionych bajtów, zarówno w kodzie, jak i w komunikacie wyjściowym. Aby to naprawić, kod jest zakodowany: każde słowo (16 bitów) jest reprezentowane jako suma 3 liczb:
Patchowanie (rozszyfrowywanie) kodu:
Sam kod zawiera zabronione bajty, ale jest znacznie krótszy (9 słów). Łata, która deszyfruje ten kod, używa tylko dozwolonych bajtów (znajduje się pod komentarzem „załataj łatkę” w źródle), więc ma bardzo ograniczony zestaw operacji (w zasadzie, po prostu „dodaj”), więc łatanie wielu bajtów byłoby zbyt dużo kodu.
Korzystanie z tego patchera nie jest proste. Aby łatać duże ilości danych za pomocą prostego kodu, potrzebowałem instrukcji takich jak
add r5, (r3)+
iadd r5, -(r3)
- a jedynymi rejestrami, które można było użyć w ten sposób, byłyr3
ir5
. Niestety, nie można użyć żadnych dozwolonych poleceń do zainicjowania tych rejestrów, więc musiałem załatać instrukcje, które to zrobiły:Wymagało to łatania tylko 2 słów.
Od dłuższego czasu szukałem sposobu na załatanie; jedynym sposobem, jaki wymyśliłem, było użycie niesławnego trybu „pośredniego”:
Aby uruchomić te dwie instrukcje, potrzeba sporo przygotowania:
patch1
) w pamięciAby wygenerować wszystkie te stałe, użyłem następujących instrukcji:
Używają słów o adresach 060562 i 060564 jako zmiennych tymczasowych; prawidłowe rozmieszczenie tych dwóch instrukcji może wygenerować dowolną wartość w 10-20 krokach.
Instrukcje użyte w tym kodzie (z wyjątkiem tych, które są załatane):
źródło
7. 23 , używa nr
l
W przypadku końcowego kanału liniowego (który musi być obecny) w tym kodzie jest dokładnie 64 kanałów liniowych.
Wykonanie go powoduje wydrukowanie drugiego cytatu:
Dzięki @ jimmy23013 za wskazanie mi tego wyzwania.
Weryfikacja
Ponieważ powyższy kod działa w tłumaczu online , nie używa spacji ( czysta 23 ), żadnych x s ( 23.ixsy ) i żadnych przecinków ( 23.dezsy ), zakładam, że jest poprawny 23. Łatwy (nieudokumentowany), który po prostu przyjmuje linię długość pod uwagę.
Kod (odczytany wstecz) jest równoważny z następującym kodem 23.dezsy :
17,62
instruuje tłumacza, aby wydrukował 62 liczby całkowite następujące po znakach.Wydaje się, że interpreter wymaga o jeden znak więcej w każdej linii niż powinien. Zakładam, że ma to uwzględniać nowe wiersze w stylu Windows. Aby kod działał zgodnie ze specyfikacją (lub w przeglądarce, która wprowadza znaki powrotu karetki), usuń jeden
K
z każdej linii.Aby przetestować kod, wklej go w obszarze Źródło , naciśnij, Enteraby wstawić końcowe podawanie linii, wpisz
23
w obszarze Konsoli (aby przełączyć z domyślnej notacji 23.dezsy na automatyczne wykrywanie) i kliknij Run Interpreter!.źródło
66 - Pyth, używa nie
e
Wynik to cytat 62:
Używa znaków
12456789:CDGJPRSTdhjkmtx
.Wcześniej zabronione:
z" &'()*+,-./03;<=>@X[\]psy{
Opiera się na serii podstawień
:
wyrażeń regularnych - w pyth, każdy zastępujący znak odwrócony znakiem ``, dwoma ciągami znaków zawierającymi nowy znak, po którym następuje znak wstecz.Wszystkie podstawienia są stosowane do oryginalnego ciągu po prostu `(J).
Dwuliterowe ciągi znaków są generowane przy użyciu funkcji zmiany
j
bazy na liczbach i podstawie w celu wygenerowania pozycji listy liczb, które są następnie kodowane przez ASCII w ciągu 2 znaków przez nowo zdefiniowanąS
funkcję.Wyjaśnienie:
źródło
z
z 66 na wykresie. To przerywa łańcuch, ponieważ następny wpis znajduje się na drugiej stronie.60. Dalej (używa nie
^
)(Jest 54 nowych linii i 51 zakładek).
Wyjście jest cytatem 56:
Wcześniej zabronione :
"'&()*+-,./\037;<=>@X_[sovy pez]{}
źródło
59. Applesoft BASIC, używa nr
~
(Wykorzystuje 11 nowych linii)
Wynik to cytat 55:
„La-dee-da, la-dee-da”. - Annie Hall
Wcześniej zabronione:
"'&()*+-,./\037;<=>@X_[sovy pez]^{}
Działa na Apple // e (lub emulatorze).
Krótkie wyjaśnienie: Po wyczyszczeniu ekranu „CALL 2111” przeskakuje do osadzonego kodu maszynowego 6502 w wierszach 4-15, który zapisuje każdy znak bezpośrednio na stronie tekstowej.
Detale:
Demontaż:
Kod maszynowy można z pewnością zoptymalizować, ale niektóre dziwactwa wynikają z ograniczeń kodowania, na przykład:
źródło
41. REGULACJA (nie używa
L
)(Nie może być żadnych nowych nowych linii)
Dane wyjściowe to cytat 50:
Wcześniej zabronione :
"#$&'()*+,-./01357:;<=>@[\]^_ BdeEghJNopQksvWxXyz{|}~
Pozostałe postacie:
!
%
?
`
2
46
89
A
CD
FGHI
K
M
OP
RSTUV
YZ
abc
f
ij
lmn
qr
tu
w
ADJUST to język 2D z 1 rejestrem i 2 stosami. Wskaźnik kodu zaczyna się od lewego dolnego rogu, a następnie idzie w kierunku północno-wschodnim. Instrukcje oparte są na faktoryzacji pierwotnej bieżącego kodu znaku, np.
Z
= 90 = 5 × 3 × 3 × 2, więc znakZ
wykona akcję „5” jeden raz, „3” dwa razy, a następnie „2” jeden raz. Dzięki temu mamy kilka sposobów wykonywania jednej funkcji i unikania zakazanych znaków.Podstawową ideą programu jest:
W kroku 1 użyjemy tych liter, aby podać 2 i 5:
F
(7 × 5 × 2)R
(41 × 2)t
(29 × 2 × 2)8
(7 × 2 × 2 × 2)Istnieje około 7, 29, 41, ale nie wpłyną one na końcowy wynik. W kroku 2 użyjemy
K
(5 × 5 × 3), aby uzyskać „3”. Zauważ, że para „5” nie ma opcji.W kroku 3 wybieramy
A
(13 × 5). W kroku 4 użyjemyn
(11 × 5 × 2), aby kontrolować rozmiar stosu iK
dostosować kierunek.Zasadniczo, jeśli krok 1 nie zawiera żadnego
R
, używamyKAnK
do wydrukowania znaku i przejścia o 4 linie w górę. W przeciwnym razie używamyKKA
do drukowania i przesuwania w dół o 2 linie. Od czasu do czasu można równieżKnnK
siłą przesunąć w górę o 4 linie, ponieważ punkt początkowy musi znajdować się w lewym dolnym rogu.Jeśli ktoś jest zainteresowany, oto środowisko robocze do tworzenia powyższego kodu. Nie ma automatycznego generatora.
źródło
23. Glif , nie używa
%
Wynik to cytat 30:
Wcześniej zabronione :
!"#$&'()*+,-./013567:;<=>@[\]^_` AbBCdeEFghIjJkLMNopqQRsTUvVWxXyYzZ{|}~
Pozostałe postacie:
?
2
4
89
D
GH
K
OP
S
a
c
f
i
lmn
r
tu
w
Zauważ, że działa to z interpreterem Java , ale to nie zgadza się ze stroną esolangs w kodowaniu
[
i+
. Jednak konstrukcja Glypho jest taka, że pełny zestaw instrukcji jest dostępny, dopóki masz cztery różne znaki, a wszystko oprócz pętli jest dostępne, jeśli masz trzy, więc jest to drobny szczegół.Wcześniej wybrałem cytat, który mi się podoba z filmu, który faktycznie widziałem, ale najwyraźniej przeoczyłem zasadę. :(
źródło