95 znaków ASCII… 95 cytatów filmowych


119

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)

  1. 4 Progresywny Unary
  2. a Bueue
  3. c Udage
  4. S 1L_a105
  5. w Binaryfuck
  6. K Subskin
  7. l 23

  1. n P1eq
  2. t Addleq
  3. 9 Kod maszynowy x86
  4. r BSM
  5. D ShaFuck 0.2
  6. u Villmark
  7. O Kod maszynowy PDP-11
  8. f ProgFk
  9. i NUMPAD
  10. H Tri
  11. 2 ferNANDo
  12. P Pointy
  13. m Subleq
  14. G FlogScript
  15. ? Nqubl
  16. % Glif
  17. ! 3var
  18. q ETA
  19. j BrainSpace 1.0
  20. V Bezsenność
  21. ` asdf
  22. 6 Leniwy K.
  23. C ! Py! Batch 1.5
  24. T Kurwa
  25. F PoGo
  26. R Golunar
  27. b Kod maszynowy 6502 + Monitor systemu Apple II
  28. Y Zagłówki
  29. I BRB
  30. U Braincrash
  31. Z Ekstatyczny
  32. M Gospodarstwo rolne
  33. A Lewatywa
  34. L DOSTOSOWAĆ
  35. $ Beatnik
  36. N Rebmu
  37. g Dupdog
  38. B Gammaplex
  39. J Kurwa 4
  40. 5 A0A0
  41. W gs2
  42. : l33t
  43. h Tonoco
  44. E Malbolge
  45. k D1ffe7e45e
  46. 1 zło
  47. Q CaneCode
  48. d Trawa
  49. # URSL
  50. | Groteska
  51. x Emmental
  52. ~ Applesoft BASIC
  53. ^ Naprzód
  54. 7 Kod maszynowy 80386 + DOS
  55. _ Argh!
  56. v Rexx
  57. } Alpha beta
  58. o Super Stack!
  59. e Pyt
  60. z Zwykły TeX
  61. > WASD
  62. ] Powłoka POSIX
  63. & Żargon, bełkot
  64. / GolfScript
  65. * Zespół x86_64
  66. 0 AppleScript
  67. X Deadfish ~
  68. , Łyżka
  69. - oOo KOD
  70. = jot
  71. @ Matematyka
  72. . Perl
  73. + DNA #
  74. < Liczba Pi
  75. ) Postscriptum
  76. [ ABC
  77. s dc
  78. { HTML
  79. ( Unary
  80. ; Oo!
  81. ' CJam
  82.   PHP
  83. " Brainfuck
  84. \ Cudowny
  85. 3 C ++
  86. y Rubin
  87. p JavaScript
  88.      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ł.


Jak dziwnie. Wszyscy wiedzą, jak zrobić # 2, ale nikt nie chce tego robić (głównie dlatego, że # 1 stałoby się niemożliwe). Jeśli to wyzwanie zostanie ponownie uruchomione, prawdopodobnie będzie możliwe do ukończenia.
CalculatorFeline

Zrobię to!
Christopher

@CalculatorFeline jak robisz 2?
Christopher

W ten sam sposób, co robisz # 1. Lenguage. Oczywiście zabiłoby to wyzwanie.
CalculatorFeline

@CalculatorFeline Lenguage został stworzony dla tego wyzwania, które jest standardową luką . (Zobacz link w pierwszym wierszu.)
jimmy23013

Odpowiedzi:


19

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.

844 844 88888   848
844 4
844 444
444
8   448
444 448 4
484
884 488
488
488
484 488 88
84  48
48
844 4444
4444
848 844 88888
88884884    888484  4484
8884484 4444848 4848888
4448448 4488    4444848
488 88  44888
4884848 4488    4444848
8488884 4488    4444848
484884888   48848   4848888
4448448 4444848 8884484
88  4488848 884484
88884884    4444848 4844848
4444848 4444888 4484
44884   4444848 8
444844  88  8484484
48  884
844 484
88
4444
444 4448
4444    4448    4
4448
444 4448    88888888888888888888
48  4444
444 4448
4444    4448    4
4448
4448
444 4448    4
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444 88888888888888888888
848 844 4

Wyjście jest cytatem 8:

"May the Force be with you." - Han Solo

Wcześniej zabronione :

?!"#$%&'()*+,-./01235679:;<=>@[\]^_` AbBCdDeEfFgGhHiIjJkLmMNoOpPqQrRstTuUvVWxXyYzZ{|}~

Pozostały:

  • Liczby: 4 8
  • Duże litery: K S
  • Małe litery: 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:

844 844 88888        # *844 = 1.
848 addr4:844 4 7    # Jump back to 4. And add some nonsense values to *4,
                     #   which is never read. Note that if it jumps to 8, 
                     #   neither *44 nor *48 could be a jump target.
844 444 10           # Initialize *444 to 2.
addr10: 444 444 13   # Increment *444.
8 448 16             # *448 = 445.
444 448 4            # If *444 == 444, jump back to 4.
484 484 22           # Increment *484.
884 488 25           # *488 = *884 + 1.
488 488 28           # Increment *488 two times. This prevents the infinite
488 488 31           #   loop when *884 is uninitialized.
484 488 88           # If *484 + 1 == *488, jump to 88.
84 48 37             # *48 = 10.
48 48 40
844 4444 43          # *4444 = 3.
4444 4444 46
848 844 addr48:88888 # Jump back to 10.

# Data.

88884884 888484 4484
8884484 4444848 4848888
4448448 4488 4444848
488 88 44888
4884848 4488 4444848
8488884 4488 4444848
484884888 48848 4848888
4448448 4444848 8884484
88 4488848 884484
88884884 4444848 4844848
4444848 4444888 4484
44884 4444848 addr84:8    # The 8 is for getting 10 in the loop.
444844 88 8484484

addr88:48 884 91     # *884 = content of current cell. 48 is also the last
                     #   data cell, which will be 88, the address of itself
                     #   when read. 884 is also the end-of-data marker.
                     # *444 will be (current cell value mod 441) + 3
844 484 94           # Reset *484 to 1.
88 88 97             # Increment the data pointer.
4444 4444 100        # *4444 = 4.
444 4448 103
4444 4448 4          # If *884 was uninitialized, skip.
4448 4448 109
444 4448 (-1)        # If it is at the end of data (2 mod 441), stop.
48 4444 115          # *4444 = 10
444 4448 118
4444 4448 4          # If the current cell value is 8, skip.
4448 4448 124
4448 4448 127
444 4448 4           # If the current cell value is 10 (the jump target), skip.
444 444 133          # *444 += 20. This makes the last cell value 88 outputs the
444 444 136          #   last character "o".
444 444 139          # *444 will be (current cell value mod 441) + 23, which is
444 444 142          #   either the character to output, or the character to
444 444 145          #   output + 256. Some characters' minimum mod 441
444 444 148          #   representations using only 4 and 8 overflowed 32 bit
444 444 151          #   integer. But those characters plus 256 worked well.
444 444 154
444 444 157
444 444 160
444 444 163
444 444 166
444 444 169
444 444 172
444 444 175
444 444 178
444 444 181
444 444 184
444 444 187
444 444 190
444 (-1) 193         # Output the character.
848 844 4            # Jump back to the loop.

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:

  • Więcej Unary wariantów
  • Języki używające liczb
    • NULL Wierzyłem, że powinno działać bez liczb nieparzystych. Niestety tak nie jest.
    • Kowal#

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ć:

  • Prawdziwe kody maszynowe, jeśli mają formaty niewymagające nagłówka pliku i mają instrukcje wprowadzania / wyprowadzania tekstu.
  • OISC oparte na liczbach.
  • Języki inne niż ezoteryczne, które z pewnych powodów mają instrukcje jednoznakowe. Może rodzina APL.
  • Samodomodyfikujący się kod binarny.
  • Języki zaprojektowane z myślą o tym, jak powinien wyglądać ten język.
  • Języki spoza wiki esolangs i nie mają opisu w języku angielskim, co oznacza, że ​​nie są one znane innym użytkownikom.

Mówiąc dokładniej, miałem:

  • Język szesnastkowy, który powinien być w stanie wydrukować cytat z kodem samorozpakowującym.
  • Język 2D, który działa z dowolnymi dwoma odrębnymi znakami (oprócz znaków nowej linii).
  • Nieudokumentowany język, który może używać długości linii jako instrukcji.

1
Wow, myślałem, że P1Eq nie jest możliwy w 64 liniach. +1. Z wyłączeniem „Lenguage” pozostał 1 język do odpowiedzi nr 3. „Wunnel” byłby idealnym kandydatem do odpowiedzi nr 2, ale wypisuje dosłowne 0 i 1 zamiast bitów. Całkowicie zmarnowany.
kennytm,

1
@KennyTM Jeszcze nie przetestowałem odpowiedzi # 2. I chyba nie będzie cytatu do wydrukowania z moim językiem odpowiedzi nr 1 po tym, jak ktoś opublikuje odpowiedź nr 2. Teraz szukam innych źródeł języków niż wiki, ale nie znalazłem nic, co działałoby.
jimmy23013,

1
@KennyTM Znalazłem inny sposób drukowania ciągów z moim językiem odpowiedzi nr 1, który może wydrukować do 62 znaków. W rzeczywistości tak działa domyślny przykład, ale byłem zbyt leniwy, aby przeczytać źródło, aby nauczyć się tego nieudokumentowanego języka.
jimmy23013,

1
Od jakiegoś czasu jestem poza SE, ale chyba się nie mylę, ta odpowiedź wygrała! Zostało to opublikowane 17 grudnia i minęło kilka tygodni. Dobra robota!
Calvin's Hobbies

126

90. Brainfuck, używa nie "

     ++++             ++++        [>+>++>+++>++++>+  ++++>++++++>+++++++
   >+++++++         +>++++++      +++>++++++++++>+   ++ ++   ++++++>++++
  +++    +++       ++>    +++     +++       ++++  +++>++++++++
 +++      +++     >++      +++             ++++  ++ ++     ++
>+++      ++++   ++++      ++++           +<<<  <<   <   <<
<<<<      <<<<   -]>>      >>++          .-->  >>>+.-<<<<.>
>>>>      >>>>   >---      .+++         <<+.
->>+      +.--   >---      -.++        ++<<
 +.-      >--     .++      <+.        -<<<
  <<<    <--       .++    <<.       >>>>>
   >+++.---         >>>.<+.-       >+++.--
     ----             .+++        >--.++<<<

<<<<<----.++++<<.>>>>>>>>>>--.+.+>----.++++<<<<<<<<<<<.>>>>>>>>>>+++.--->----.
++++<<+.->++..--<---.-.++++<<<<<<<--.++<<++.--.>>---.+++<<.>>>>>++.-->>>+.->>-
--.+++<---.+++>+++.---<<<<<<<<<<.>>>>++.-->>>>>>-.-.++<----.++++<<<<<<<<<<<<<.

Wynik to cytat 90:

"A martini. Shaken, not stirred." - James Bond

Wcześniej zabronione: py3\

Ktoś musiał to zrobić, zanim którekolwiek .+-zostanie zabronione.
Wypróbuj tutaj: http://ideone.com/dlu8VE


28
Absolutnie piękna.
Flonk

13
Dlaczego miałbyś usunąć "? To rodzaj środka dla wszystkich ludzi po tobie.
Peter Olson

75

51. Malbolge (używa nie E)

(Newlines są tylko dla wyjaśnienia, a nie częścią źródła.)

ba`r:?!!6l:jVVw5ut2rqML:nllHFFhDfAcR?P`ut:rqZYtm2qCRhPPNNihgf%qFF!!2AA??TSwutOTr55PImGFKJCBfFc
cbONq9!!6Y4W8hCf4ttOONL:JlHGFFDgfAS?b``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWttNML4nOlMFjhCBAF?
cC%A:9!!65492Vw5uu2rqMMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfRuPrr`L:nlljj!hffTc!?``u::88ZYWmr2SSRglOjihgfI%FFDCBAWV?ZYw::8Tr54JImGFKDCgAF?
DC%%:98!654WWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUZSRWPONMR54m!ljjihffw?
ct``:?8nmHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUZSRWPONMR54m!ljjihffw?
ct`%qLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4!BBW?UZYw:99Nr64JO2MFjDgffw?
ct`%qLKJZZGWWDTB4RPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZ549ihwfut2bqNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPO!ljjihffw?
ct`NMLKJZ549ihwfut2bqNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPO!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGW8hTfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUTww::tr`64nn!ljjihffw?
ct`NMLKJZHGW8hTfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUTww::tr`64nn!ljjihffw?
ct`%qLKJZHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUZSRWPONMR54m!ljjihffw?
ct`%qLKJZHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUZSRWPONMR54m!ljjihffw?
ct``:?!!6HGWWDUBRRPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMRKPOmlLjihffw?
ct``:?!!6HGWWDUBRRPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMRKPOmlLjihffw?
ct``:?!!6l:jihwT4uPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfwu98NMRKPONMFjihffw?
ct``:?!!6l:jihwT4uPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfwu98NMRKPONMFjihffw?
ct``:?!!6l:jihwfut?rrNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`6KPONMFjihffw?
ct``:?!!6l:jihwfut?rrNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`6KPONMFjihffw?
ct`NML8nml:jihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDm2Aj??gfw::tTqLKPONMFjihffw?
ct`NML8nml:jihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDm2Aj??gfw::tTqLKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPOmlLjihffw?
ct`NMLKJZHGWWDUBRRPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPOmlLjihffw?
ct``:?KJZHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMR54mHMLKDCgAF?
DC%A:9!!65:92Vw5uttONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMR54m!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nIljiFhfBTc!?``N:98Z65t42qjRRgfNMLLK9HHG5DZ2AA??gww:ttN6RKPOHlFKDCBGF?
DCB%:98!6Y:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6549WDUBRR2bq`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAjihZSRWPOTqL4nn!ljjihffw?
ct``:?!!6549WDUBRR2bq`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAjihZSRWPOTqL4nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?8nmHGWihwfutPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUgfw::tNMR54m!ljjihffw?
ct``:?8nmHGWihwfutPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUgfw::tNMR54m!ljjihffw?
ct``:?!!6HGW8hTT4uPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUTwwu98NMR4nn!ljjihffw?
ct``:?!!6HGW8hTT4uPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUTwwu98NMR4nn!ljjihffw?
ct``:?KJZHGWihwfutPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUgfw::tNMRKPO!ljjihffw?
ct``:?KJZHGWihwfutPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUgfw::tNMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`NMLKJZHGWihwfutPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUgfw::tNMRKPONMFjihffw?
ct`NMLKJZHGWihwfutPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUgfw::tNMRKPONMFjihffw?
ct`NMLKJZ549ihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPONMFjihffw?
ct`NMLKJZ549ihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPONMFjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6F!DBBAVUTSw:99Nr54J22MFjDCBAF?
DC%A:9!!6549Vhwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nnlGFjJIBGF?
cC%%:?8!65:9Vhwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6uWVUTSSRPlOjihgJI%FFDCCAAV?ZYw:98NMR5Jn2GFKDCHGF?
DCBA:9!!Zl:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZ549ihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPONMFjihffw?
ct`NMLKJZ549ihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPONMFjihffw?
ct`NMLKJZl:jihwfut?rrNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`6KPONMFjihffw?
ct`NMLKJZl:jihwfut?rrNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`6KPONMFjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct``:?KJZHGWihwfutPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUgfw::tNMRKPO!ljjihffw?
ct``:?KJZHGWihwfutPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUgfw::tNMRKPO!ljjihffw?
ct``:?KJZHGW8hTT4uPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUTwwu98NMRKPO!ljjihffw?
ct``:?KJZHGW8hTT4uPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUTwwu98NMRKPO!ljjihffw?
ct``:?KJZHGW8hTT4uPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUTwwu98NMRKPO!ljjihffw?
ct``:?KJZHGW8hTT4uPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUTwwu98NMRKPO!ljjihffw?
ct``:?8nmHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUZSRWPONMR54m!ljjihffw?
ct``:?8nmHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUZSRWPONMR54m!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::8qZun4!2SRAm?OjLhgJIHGF!!CAW?UTYRWu8NrLKPnHGFKDCBfF?
DC%%:9!!6YGWWDUSAttrNMLKJ%lGFFggUBc??P`NM9Kw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKnZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
DC%%:?8!65:92Vw5uu2rqqL:nllGihg%BTc!?``u::rw6ut4!2jiAPONjchgJI%cbaDYBWV?ZYw:P9NMq5J2HlFKDCHAF?
DCB%:98!Zl:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffAcbaa`ut:rZYuWml2SRhPfOjchgJI%FbaDYBWV?ZYw:99NSLKPn2GFKDCBAF?
DC%A:98!65492Vw5utP

Wyjście jest cytatem 49:

"It's alive! It's alive!" - Henry Frankenstein

Wcześniej zabronione :"#&'()*+,-./0137;<=>@[\]^_ deopQksvxXyz{|}~

Pozostałe postacie:

  • Symbolika: ! $ % : ? `
  • Liczby: 2 456 89
  • Duże litery: ABCD FGHIJKLMNOP RSTUVW YZ
  • Małe litery: abc fghij lmn qr tu w

Możesz go uruchomić za pomocą referencyjnego interpretera Malbolge .


13
Ta odpowiedź jest niesamowita! Nigdy wcześniej nie widziałem przydatnego programu Malbonge, nie mówiąc już o tak ograniczonym. Dobra robota!
Isaacg

10
Święta Matka Boża. Jak to napisałeś?
Ingo Bürk

2
Naprawdę chcę zapytać, jak to wymyśliłeś? Mam na myśli, że jest oczywiście generowany tak jak każdy program malbolge, ale jak pracowałeś w ograniczeniach postaci?
Ingo Bürk,

23
Właśnie zauważyłem, że kod jest sformatowany w taki sposób, że w dwóch kolumnach pisze „Jest żywy”. Dang, to jest niesamowite. To jest warte nagrody, więc ją wystawię.
Ingo Bürk

3
@gone_native Szczegóły? Jak to zrobiłeś?
Pureferret,

37

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:

44444444444444444444444444444444448444444444444444444444444444444444444444444444
4444444444444444444444444444444844444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444484444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444844444444444
4444444444444444444444444444444444444444444444444444444444444444444444444444444444
444444444844444444444444444444444444444448KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKSSSSSSSSaKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKSKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKSKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKSSSSSSSSSSSSSSSSSSSSSSSSSSKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

Kod skompresowany bzip2i zakodowany w formacie base-64 jest następujący:

QlpoOTFBWSZTWSPev2AAAC3//IQAAE8AxAVVAljshO2a1CIgAAQCIAACQAKABEgwALtaISjAEwAC
YEwAE/RCKepoDIDQDQhgAATBEqUyYJ6TTCYm0RiYAmjE9y2DggyCjSr7QBKBBfLXbplPpVr0UZ9F
fce4QKIQigD2luNYchgZJSn9wWwWTL+vYVhM0o2SZAgIgLAWoqgeIwgnxBokBQJABPmuigiPswCA
CIqGH0GnHfFahZ987YEg6UpWEhB7jmzKcAOjGZxPEKJIMikhAUX/F3JFOFCQI96/YA==

Wynik to cytat 18:

„Udało się, Ma! Top na świecie!” - Arthur „Cody” Jarrett

Wcześniej zabronione :

?!"#$%&'()*+,-./0123567:;<=>@[\]^_` AbBCdDeEFfgGhHiIjJkLmMNoOpPqQRrsTuUvVWxXyYzZ{|}~

Pozostałe postacie:

  • Liczby: 4 8
  • Duże litery: K S
  • Małe litery: 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)

org 100h

; „Udało się, Ma! Top of the world!” - Arthur „Cody” Jarrett

powtórz „”
db „4”
koniec powtórz
db „8”
powtórz „M” –1
db „4”
koniec powtórz
db „8”
powtórz „a” –1
db „4”
koniec powtórz
db „8”
powtórz „d'-1
db „4”
koniec powtórz
db „8”
powtórz „e” –1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „i” -1
db „4”
koniec powtórz
db „8”
powtórz „t” –1
db „4”
koniec powtórz
db „8”
powtórz „,” - 1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „M” –1
db „4”
koniec powtórz
db „8”
powtórz „a” –1
db „4”
koniec powtórz
db „8”
powtórz „!” - 1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „T” –1
db „4”
koniec powtórz
db „8”
powtórz „o” -1
db „4”
koniec powtórz
db „8”
powtórz „p” -1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „o” -1
db „4”
koniec powtórz
db „8”
powtórz „f” –1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „t” –1
db „4”
koniec powtórz
db „8”
powtórz „h” –1
db „4”
koniec powtórz
db „8”
powtórz „e” –1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „w” -1
db „4”
koniec powtórz
db „8”
powtórz „o” -1
db „4”
koniec powtórz
db „8”
powtórz „r” –1
db „4”
koniec powtórz
db „8”
powtórz „l” –1
db „4”
koniec powtórz
db „8”
powtórz „d'-1
db „4”
koniec powtórz
db „8”
powtórz „!” - 1
db „4”
koniec powtórz
db „8”
powtórz „” „-1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „-'- 1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „A” –1
db „4”
koniec powtórz
db „8”
powtórz „r” –1
db „4”
koniec powtórz
db „8”
powtórz „t” –1
db „4”
koniec powtórz
db „8”
powtórz „h” –1
db „4”
koniec powtórz
db „8”
powtórz „u” -1
db „4”
koniec powtórz
db „8”
powtórz „r” –1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „” „-1
db „4”
koniec powtórz
db „8”
powtórz „C” –1
db „4”
koniec powtórz
db „8”
powtórz „o” -1
db „4”
koniec powtórz
db „8”
powtórz „d'-1
db „4”
koniec powtórz
db „8”
powtórz „y” -1
db „4”
koniec powtórz
db „8”
powtórz „” „-1
db „4”
koniec powtórz
db „8”
powtórz '-1
db „4”
koniec powtórz
db „8”
powtórz „J'-1
db „4”
koniec powtórz
db „8”
powtórz „a” –1
db „4”
koniec powtórz
db „8”
powtórz „r” –1
db „4”
koniec powtórz
db „8”
powtórz „r” –1
db „4”
koniec powtórz
db „8”
powtórz „e” –1
db „4”
koniec powtórz
db „8”
powtórz „t” –1
db „4”
koniec powtórz
db „8”
powtórz „t” –1
db „4”
koniec powtórz
db „8”
string_end:

data_start:
powtórz 28 * 2 + 2
dec bx
koniec powtórz
powtórz 8
naciśnij bx
koniec powtórz
popa

powtórz 0x10000-0xFF21-28 * 2-2
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFF21-0xFECD
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFECD-0xFE4C
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFE4C-0xFDB4
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFDB4-0xFCEB
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFCEB-0xFC7C
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFC7C-0xFC12
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFC12-0xFBB7
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFBB7-0xFAFE
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFAFE-0xFA81
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFA81-0xFA61
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFA61-0xFA21
dec bx
koniec powtórz
naciśnij bx
powtórz 0xFA21-0xF8CD
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF8CD-0xF802
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF802-0xF7B4
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF7B4-0xF760
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF760-0xF6F9
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF6F9-0xF674
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF674-0xF634
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF634-0xF53C
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF53C-0xF480
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF480-0xF442
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF442-0xF346
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF346-0xF2D2
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF2D2-0xF231
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF231-0xF201
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF201-0xF200
dec bx
koniec powtórz
naciśnij bx
powtórz 0xF200-0xF1BE
dec bx
koniec powtórz
naciśnij bx

; 28 bajtów kodu

; zakończono zapisywanie kodu wydruku

powtórz 0xF1BE-0xAAAD
dec bx
koniec powtórz
powtórz 28
naciśnij bx
koniec powtórz


; zakończono przechowywanie zwartego kodu, wypełnij pozostałe miejsce „dec bx”
; działać jako nop, dopóki zmodyfikowany kod nie zostanie trafiony
fill_pos:
powtórz 0xffff-fill_pos -2
dec bx
koniec powtórz

1
Moja odpowiedź używała instrukcji 80386 ( IMULokreś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!
anatolyg

2
A teraz wszystkie nieparzyste liczby zniknęły :(
kennytm

@anatolyg Bardzo się cieszę, że to zrobiłem, zredagowałem odpowiedź, aby to odzwierciedlić.
Sir_Lagsalot,

24

61. Kod maszynowy 80386 + DOS, używa nr 7

u`t^cGFntlFmFnmaZKuacanftafightainahFrF!aThi2ai2ath$aWaraRLKm!calaPrFWidFntaMFrkinaMufflF8
$k!2!5%B!%!BH%!!%BAPH4?4#P^jAZj#Y1T!1L#1T41T61T?1LA1LC1TE1TI1TJ1TL1TM1TU5
1LW1T^1La1Th1Lj1LuF1Ld1Tn1TO1TZ1TuF1TO1L%1TZ1T:F1TZF1L%5
FF1T%F1T%F1L%Fj$Y1L%1LY1LOkLqEQFF1T%k|q6^1|A1|C5!   ZBBBBA!O

Wynik jest cytatem 64:

"Gentlemen, you can't fight in here! This is the War Room!" - President Merkin Muffley

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 .comi uruchom (linie podziału używają formatu DOS 0d 0a; TABw 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.comdebugera DOS do opracowania kodu. Aby „złożyć” „kod źródłowy”, przekieruj go do debuggera. W DOSBox:

debugowanie <quote.asm

Kod źródłowy:

a100
    jnz 162; jump over the output data, to have it at a convenient address 104
    jz  162; (continued)
    db 'cGFntlFmFnmaZKuacanftafightainahFrF!aThi2ai2ath$aWaraRLKm!calaPrFWidFntaMFrkinaMufflF8',d,a,'$'
    ;   "Gentlemen, you can't fight in here! This is the War Room!" - President Merkin Muffley
    ; Some weird numbers; see explanations below
    dw 216b, 2132
    ; Padding
    db 35
    and ax, 2142
    and ax, 4221
    dec ax
    and ax, 2121
    and ax, 4142
    push ax; push the value 100; we will need it later
    dec ax
    xor al, 3f
    xor al, 23
    push ax
    pop si; now si points to the output message
    push byte ptr 41
    pop dx
    push byte ptr 23
    pop cx
    ; Fix the forbidden characters in the output message
    xor [si+21],dx
    xor [si+23],cx
    xor [si+34],dx
    xor [si+36],dx
    xor [si+3f],dx
    xor [si+41],cx
    xor [si+43],cx
    xor [si+45],dx
    xor [si+49],dx
    xor [si+4a],dx
    xor [si+4c],dx
    xor [si+4d],dx
    xor [si+55],dx
    xor ax, a0d
    xor [si+57],cx
    xor [si+5e],dx
    xor [si+61],cx
    xor [si+68],dx
    xor [si+6a],cx
    xor [si+75],cx
    inc si
    xor [si+64],cx
    xor [si+6e],dx
    xor [si+4f],dx
    xor [si+5a],dx
    xor [si+75],dx
    inc si
    xor [si+4f],dx
    xor [si+25],cx
    xor [si+5a],dx
    xor [si+3a],dx
    inc si
    xor [si+5a],dx
    inc si
    xor [si+25],cx
    xor ax, a0d
    inc si
    inc si
    xor [si+25],dx
    inc si
    xor [si+25],dx
    inc si
    xor [si+25],cx
    inc si
    push byte ptr 24
    pop cx
    xor [si+25],cx
    xor [si+59],cx
    xor [si+4f],cx
    ; Done with the output message
    ; Now fix the code (program patches itself)
    imul cx, [si+71], 45; "calculate" the address of the code
    push cx
    inc si
    inc si
    xor [si+25],dx; message patching was not finished... now it is
    imul di, [si+71], 36; "calculate" the patch value 0x8c
    pop si
    xor [si+41], di; make code "0xcd 0x21" - DOS function call
    xor [si+43], di; make code "0xc3" - terminate the program
    xor ax, 921; select DOS function 9 (output a string)
    pop dx; set dx to point to the output message
    inc dx
    inc dx
    inc dx
    inc dx
    db 41, 21, 4f

rcx 11b
n quote.com
w
q

Niektóre uwagi:

  • Komunikat wyjściowy ma wszystkie zabronione znaki maskowane XOR za pomocą jednej z 3 masek 0x41, 0x23oraz 0x24. Wybrałem maski, które nie były zabronione.
  • Kod wykonujący dane wyjściowe zawiera niedozwolone znaki lub, co gorsza, bajty inne niż ASCII 0xcdi 0xc3. Są również maskowane XOR, więc kod musi się zmodyfikować.
  • Wszystkie dostępy do pamięci są wykonywane z przesunięciem: wskaźniki nigdy nie wskazują samego materiału, ale kilka bajtów mniej. Powodem jest to, że podczas korzystania z dostępu do pamięci bez przesunięcia, kody instrukcji nie są ASCII.
  • Znak kjest tutaj bardzo ważny: koduje IMULinstrukcję mnożenia. Używam go do uzyskiwania stałych wartości: na przykład stała 0x216b, po pomnożeniu 0x45, 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 jest 0x2132*0x36=0x8c(nie przeszkadza tam obcięcie).
  • Jak opisano powyżej, uzyskanie stałych jest poważnym bólem. Co gorsza, nie zakładałem niczego o początkowych wartościach rejestrów. DOS zazwyczaj ustawia je na 0, ale nigdy nie może być pewny ... To doprowadziło do zabawy ćwiczeń w inicjalizacji rejestru na 0: and ax, 2142; and ax, 4221.
  • Dodałem 2 łamacze linii dla „czytelności” (na szczęście nie jest to golf kodowy!). Są one określone w kodzie jako „xor ax, a0d”; musi być ich liczba parzysta, więc wartość axnie zmienia się.

Edycja: nieużywanie _postaci (złe wyczucie czasu w poście) - nie można używać pop di, więc diteraz znacznie mniej korzystaj z rejestru.


@jest już zbanowany w 78, proszę wybrać inny symbol.
kennytm

3
Rekwizyty, proszę pana, rekwizyty.
Claudiu

3
„Utworzenie pliku wykonywalnego, który używa tylko ASCII do wydruku, nie jest łatwym zadaniem.” Ten artykuł może Cię zainteresować: cs.jhu.edu/~sam/ccs243-mason.pdf
Russell Borogove,

22

85. HTML5 (używa nie {)

&#x22&#x57&#x68&#x6f&#x27&#115&#x20&#x6f&#x6e&#x20&#x66&#x69&#x72&#115&#x74&#x2e&#x22&#x20&#x2d&#x20&#x44&#x65&#x78&#x74&#x65&#x72

Wyjście jest cytatem 91.

"Who's on first." - Dexter 

Wcześniej zabronione : py3\" ';(


8
Co do licha ...
Ethan Bierlein

19

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:

atawSaa(a×1017)KKla8Kc(a×1017)atawSaa(a×1017)KKla8Kc(a×1017)…atawSaa(a×1017)4cwtrtr(a×1017)

tutaj (a × 1017) oznacza znak „a” powtórzony 1017 razy. Plik skompresowany w formacie bzip2 w formacie base64 (247 bajtów) to:

QlpoOTFBWSZTWW9SDOgAgfoPgIRgAAgIACgFFIAAeEAB+52sQ2KYACaCT1VQ0AATUqgBoAUlSTEyemk+qV2BSuKhVc
hIq6AoeKqI5BEe6qI+gUpfOZshoMraraVbDZsFiti1YtEbRawVajWLbCW0mybWwthG0qrZDGrYqirG21o1BrYq2xtD
NNyCI9CoPYAiOuARHABEeqqI6FQfIjiqiOhUHdEYVKvFW2qvv6QtEYjJhpkkxEKo2qKjWjWo1jRGrFUUaNUVaNqNYq
xqNFYtqNtbVFWgzaNhW1WYtaapVPGEpxEdRHYER3iMARH+LuSKcKEg3qQZ0A==

Suma SHA1 oryginalnego pliku powinna wynosić 1250ecf73c61ef93a31c4f7dfaa0a7631ada50bf.

Wyjście jest cytatem 9:

"Fasten your seatbelts. It's going to be a bumpy night." - Margo Channing

Wcześniej zabronione :

?!"#$%&'()*+,-./0123567:;<=>@[\]^_` AbBCdeEFfgGhHiIjJkLmMNoOpPqQRsTuUvVWxXyYzZ{|}~

Pozostałe postacie:

  • Liczby: 4 8 9
  • Duże litery: K S
  • Małe litery: 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:

valid-bf-program[(garbage)]valid-bf-program

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- zjako 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:

import hashlib
import itertools

characters = b'aclnrtwDKS489'

starts = {b'+>[', b'->[', b'.>[', b'.<[', b'+<[', b'-<[', b'>[', b'<['}
ends = {b']<+', b']<-', b']<.', b']>.', b']>+', b']>-', b']>', b']<'}

for i, group in enumerate(itertools.product(characters, repeat=7)):
    seq = bytes(reversed(group)) + b'a'*(1024-7)
    sha = hashlib.sha1(seq).digest()

    for s in starts:
        if sha.startswith(s):
            starts.remove(s)
            print(seq, sha)
            break

    for e in ends:
        if sha.endswith(e):
            ends.remove(e)
            print(seq, sha)
            break

    if i % 1000000 == 0:
        print('***', i, seq[:7])

Możemy szybko uzyskać następujące ekwiwalenty:

>[(garbage)  = atawSaaaaaaa…
(garbage)]<- = 9t9nctaaaaaa…
(garbage)]<+ = KKla8Kcaaaaa…
(garbage)]<. = 4cwtrtraaaaa…

- = >[(garbage)]<- = atawSaaaaaaa…9t9nctaaaaaa…
+ = >[(garbage)]<+ = atawSaaaaaaa…KKla8Kcaaaaa…
. = >[(garbage)]<. = atawSaaaaaaa…4cwtrtraaaaa…

Wreszcie mamy prosty koder:

def encode(quote):
    SUFFIX = 'a' * (1024 - 7)
    PREFIX = 'atawSaa' + SUFFIX
    MINUS = PREFIX + '9t9ncta' + SUFFIX
    PLUS = PREFIX + 'KKla8Kc' + SUFFIX
    DOT = PREFIX + '4cwtrtr' + SUFFIX
    value = 0
    for c in quote:
        char = ord(c)
        if char > value:
            yield PLUS * (char - value)
        elif char < value:
            yield MINUS * (value - char)
        yield DOT
        value = char

with open('1.txt', 'w') as f:
    for seg in encode('''"Fasten your seatbelts. It's going to be a bumpy night." - Margo Channing'''):
        f.write(seg)

1
SUFFIX = 'a' * (1024 - 7)- na wszelki wypadek 1024 - 7nie zawsze 1017? :-)
Joe

1
@Joe: Tak jest.
kennytm

1
Cholera, idzie moja odpowiedź # 2.
gone_native

@ gone_native Też miałem. Ale wciąż mam inną odpowiedź # 2 ...
jimmy23013

1
@Joe, (1024 - 7)jest bardziej czytelny.
Vi.

18

87. Ook !, używa nie ;

Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.

Wynik to cytat 84:

"Oh, no, it wasn't the airplanes. It was Beauty killed the Beast." - Carl Denham

Wcześniej zabronione: py3\" '


Czy sam to wszystko napisałeś?
Beta Decay

4
Napisałem program Java, który konwertuje String na Ook! program, który wyświetla ciąg znaków. Ale nie używa pętli, tylko zwiększa i zmniejsza.
stevecross

1
@feuerball, więc ... to naprawdę nieefektywny Ook! program, który tam wygenerowałeś. (pod względem przestrzeni)
tomsmeding

2
Wiem, ale przynajmniej robi to, co powinien.
stevecross

1
To idealne dopasowanie języka i cytatu. Rozumiem, że czytałeś Moving Pictures ?
TRiG

18

76. oOo CODE , używa nr-

WhaT_the_FuCk_iS_thE_coDe_i_Am_rEadIng_herE?
iT_AcTuaLlY_WorkS_liKe_oTHer_VaLid_CodE_in_The_ProGraMming_lAnGuaGe_CAlleD_oOO_CoDe
I_oNlY_wrOte_The_codE_hEre_To_MAke_iT_LoOk_bEttEr
tHe_cOde_CouLd_bE_wrIttEn_iN_loTS_oF_tHE_lETtER_o
BUt_I_DeCIdED_tO_MaKE_ReAdinG_iT_a_niceR_eXPeRIeNCe
NOw_I_am_RuNNing_Out_OF_cOdiNg_tIme_aNd_Fun_thiNgS_To_WRiTE
tHerEfORe_i_dECiDed_To_dO_thE_reSt_oF_thE_thIng_WitH_juSt_tHe_lETtEr_o
So_eNjoY
OoOooOoooOoOooOooOoooooOoOooOoOOoooOooOOooOoOooOoooooOoOOoOOoOOoOOoOOoOOoOooOoOOoooOOoOooOOoOooOooOooOooOooOooOooOooOooOooOooOOoOoooOoOooOooOoooooOoOooOoOOoooOooOOooOoOoooooOoOOoOOoOooOoOOoooOoOOoOOOoOooOOoOoOoOoOooOooOoooooOoOooOoOOoooOoOOoOOoOOOoOoooOoOooOooOooOoooooOoOooOoOOoooOoOOoOOOoOoOoOoOoooooOoOOoOOoOooOoOOoooOoOOOoOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOOoOOoOoOOoOOoOOOoOoOOOoOoooOoOoOOoOoooOooOooOooooOoOOoooOoOOOoOooOooOooOooOooOooOooOooOooOooOooOooOOoOoOOoOOoOOoOoOoOoooooOoOOoOooOoOOoooOOoOooOooOooOooOooOooOooOOoOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOOooOoOoooooOoOOoOOoOOoOooOoOOoooOooOooOOoOooOooOooOooOooOooOooOooOooOooOooOooOOoOooOooOOoOooOoooOoOooOoooooOoOOoOOoOooOoOOoooOOooOoOooOooOoooooOoOOoOooOoOOoooOoOOoOOOoOoOOoOoOoOoooooOoOOoOooOoOOoooOOoOooOoooOoOooOoooooOoOOoOOoOooOoOOoooOooOooOOoOoOoOoOooOooOoooooOoOooOoOOoooOOoOoOoOoOoooooOoOOoOOoOooOoOOoooOOoOooOoooOoOooOooOoooooOoOooOoOOoooOooOOoOoOoOoOoooooOoOOoOooOoOOoooOOoOoooOoOooOooOoooooOoOooOoOOoooOoOOoOOoOOoOOOoOoOOoOOoOOoOOoOOoOOoOOoOOOoOooOooOooOooOooOooOooOooOooOooOOoOooOooOooOooOooOooOooOooOooOooOooOooOOoOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOOo

Wynik jest cytatem 78:

"Open the pod bay doors, HAL." - Dave Bowman

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:

'<lots of bf code>'.replace(/>/g,'ooo').replace(/</g,'ooO').replace(/\[/g,'oOo').replace(/\]/g,'oOO').replace(/-/g,'Ooo').replace(/\+/g,'OoO').replace(/\./g,'OOo')

Następnie użyłem tego skryptu Python, aby uzyskać wersję „czytelną” z czystego KODU OOo i tekstu wejściowego:

ooocode = '<lots of oOo CODE>'
alphabet = [chr(x) for x in range(ord('A'), ord('Z') + 1)] + [chr(x) for x in range(ord('a'), ord('z') + 1)]
if len(ooocode) % 3: print("INVALID CODE")
inp = input()
index = 0
while inp != '':
    for char in list(inp):
        if char in alphabet:
            case = ooocode[index]
            if case.upper() == case:
                print(char.upper(), end='')
            else:
                if char.lower() in 'py3\\" \';({s[)<+.@=':
                    print("INVALID INPUT")
                else:
                    print(char.lower(), end='')
            index += 1
        elif char in 'py3\\" \';({s[)<+.@=':
            print("INVALID INPUT")
        else: print(char, end='')
    print("")
    inp = input()
print(ooocode[index:])

2
I z jakiegoś powodu zawsze czytam to głosem ducha.
ASCIIThenANSI

18

9. Addleq (używa nie t)

Używa sqasm.cppna 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

8   448
448
88  448
448
88  444
444
448 444
444 844
448 844
844 848
88  848
8   848
84  884
884
8   884
8   4844
4844
884 4844
88  488
488
8   488
488
444 488
488 4444
4444
8   4444
4444    888
88  888
44  4488
448 88888888888888888888
844 4488
4444    4484
8   4484
88  4448
4484    4448
844 88888888888888888888
4488    88888888888888888888
4484    88888888888888888888
888 88888888888888888888
488 88888888888888888888
444 88888888888888888888
848 88888888888888888888
884 88888888888888888888
4448    88888888888888888888
4444    88888888888888888888
4844    88888888888888888888
444 88888888888888888888
844 88888888888888888888
4488    88888888888888888888
4484    88888888888888888888
888 88888888888888888888
488 88888888888888888888
448 88888888888888888888
444 88888888888888888888
44  88888888888888888888
444 88888888888888888888
848 88888888888888888888
884 88888888888888888888
4448    88888888888888888888
4444    88888888888888888888
4844    88888888888888888888
444 88888888888888888888
844 88888888888888888888
4488    88888888888888888888
4484    88888888888888888888    4   888 88888888888888888888    4   8888    8888    88888888888888888888

Wynik to cytat 22:

"Bond. James Bond." - James Bond

Wcześniej zabronione :

?!"#$%&'()*+,-./01235679:;<=>@[\]^_` AbBCdDeEFfgGhHiIjJkLmMNoOpPqQRrsTuUvVWxXyYzZ{|}~

Pozostały:

  • Liczby: 4 8
  • Duże litery: K S
  • Małe litery: 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:

int str2int(const string &s)
{
        int ret=0;
        sscanf(s.c_str(),"%d",&ret);
        return ret;
}

Tutaj sscanf(s, "%d", &ret)zachowuje się jak ret = strtol(s, NULL, 10);(C11 §7.21.6.2 / 12), a gdy wejście się przepełni, strtolzwróci LONG_MAX (C11 §7.22.1.4 / 8). Zatem jeśli sizeof(long) > sizeof(int)powinniśmy dostać ret == -1. Jednak na platformie, która sizeof(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ą:

  1. Jeśli wiersz zawiera tylko 2 liczby, automatycznie poda trzeci numer jako adres następnej instrukcji
  2. Jeśli wiersz zawiera tylko 1 numer, numer ten jest kopiowany, a trzeci numer jest podawany zgodnie z regułą nr 1.

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:

32  space
34  "
45  -
46  .
66  B
74  J
97  a
100 d
101 e
109 m
110 n
111 o
115 s

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:

# *448 = 34 = (9×2 - 1)×2 = (*8×2 + *88)×2
8   448
448
88  448     # Here we get *8 == 9.
448

# *444 = 32 = -2 + 34 = (*88×2) + *448
88  444
444
448 444

# *844 = 66 = 32 + 34 = *444 + *448
444 844
448 844

# *848 = 74 = 66 + 9 - 1 = *844 + *8 + *88
844 848
88  848
8   848

# *884 = 97 = 44×2 + 9 = *884×2 + *8
84  884
884
8   884     # Here we get *44 == 45.

# *4844 = 115 = 9×2 + 97 = *8×2 + *884
8   4844
4844
884 4844

# *488 = 46 = (-2 + 9)×2 + 32 = (*88×2 + *8)×2 + *444
88  488
488
8   488
488
444 488

# *4444 = 101 = 46×2 + 9 = *488×2 + *8
488 4444
4444
8   4444

# *888 = 100 = 101 - 1 = *4444 + *88
4444    888
88  888

# *4488 = 111 = 45 + 66 = *44 + *844
# The line in the middle prints '"', and also set *88 == -1
44  4488    # Here we get *84 == *44
448 88888888888888888888    # Here we get *88 == -1
844 4488

# *4484 = 110 = 101 + 9 = *4444 + *8
4444    4484
8   4484

# *4448 = 109 = 110 - 1 = *4484 + *88
88  4448
4484    4448

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:

# From:
4484    88888888888888888888
888 88888888888888888888
8888    8888    88888888888888888888

# To:
4484    88888888888888888888    4   888 88888888888888888888    4   8888    8888    88888888888888888888

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.


1
Cóż za imponująca lista zbiegów okoliczności! Wygląda na to, że wszystko było częścią twojego przebiegłego planu.
anatolyg

@anatolyg: To właściwie trzecia wersja kodu :), równania są przepisywane kilkakrotnie, aby zminimalizować liczbę wierszy. Starsze wersje mają za dużo ~ 3 linii.
kennytm

Byłoby jeszcze ładniej, gdyby zamiast 4i 8były 0i 7.
Vi.

@Vi. Lub co najmniej 8 i 9 ... Wydaje się, że nadal działa język oparty na liczbach.
jimmy23013

17

89. PHP, używa nie

$j=chr(46);$k=chr(0x20);$l=chr(0x22);$z=chr(112);$q=<<<H
${l}I${k}feel${k}the${k}need${k}-${k}the${k}need${k}for${k}s${z}eed!$l$k-${k}Lt.${k}Pete$k${l}Maverick$l${k}Mitchell${k}and${k}Lt.${k}Nick$k${l}Goose$l${k}Bradshaw
H;
echo$q;

Wynik to cytat 94:

"I feel the need - the need for speed!" - Lt. Pete "Maverick" Mitchell and Lt. Nick "Goose" Bradshaw

Wcześniej zabronione :py3\"


24
Cholerny zły człowiek.
Joshpbarron

Ktoś blokuje 'teraz !!!
Optymalizator

7
@Optimizer gotowe
Martin Ender

16

81. PI , używa nr<

9.1415926525897922284626422822795028841971692992751058209749445927078164062862089986280048252421170679821480865102822066470928446095505822017252594081284811174502841027019285211055596446229489549200819644288109756659224461284756482227867801652712019091456485669224602486104542266482122906072602491412727245870066062155881748815209209628292540917152642678925902600112005205488204665212841469519415116094220572702657595919520921861172819026117921051185480744622799627495672518857527248912279281820119491298226720624406566420860212949462952247271907021798609427027705292171762921767522846748184676694051220005681271452605608277857712427577896091726271787214684409012249524201465495852710507922796892589225420199561121290219608640244181598126297747712099605187072110499999982729780499510597217228160962185950244594552469082026425222082522446850252619211881710100001278287528865875222082814206171776691472025982524904287554687211595628628822527875907519577818577805221712268066120019278766111959092164201989280952572010654858622788659261522818279682202019520252018529689957726225994128912497217752804791215155748572424541506959508295221168617278558890750982817546274649292192550604009277016711290098488240128582616025627076601047101819429555961989467678274494482552797747268471040475246462080466842590694912902126770289891521047521620569660240580281501925112522824200255876402474964722629141992726042699227967822547816260092417216412199245862150202861829745557067498085054945885869269956909272107975092029552211652449872027559602264806654991198818247977525662698074265425278625518184175746728909777727928000816470600161452491921722172147722501414419725685481612611572525521224757418494684285211219071941411145477624168625189815694855620992192221842725502542568876717904946016514668049886272127917860857841818279679766814541009518817861609506800642251252051171929848960841284886269456042419652850222106611864067442786220891949450471207107869609560640719172874677646575729624128908658526459958144904780275900994657640789512694681981525957098258226205224894077267194782684826014769909026401161944074550050682004962524517490996514014298091906592509072216964615157098580874105978859597729754989001617509284681582686818689427741559918559252459519594110499725246808459872716446958486518167162226260991246080512418841904512441065497627807977156914059977001296160894416948685558484060504220722258284886481584560285060168427094522674676788952521085225499546667278209864565961160548862005774564980055906045681740241125150760694794510965960940252288797108941456691468672287489405601015045086179286809208747609178249285890097149096759852612655497818921297848216829989487226588048575640142704775551121796414515217462141645428584447952658678210511411547157195211114271661021159695162114429524849071871101457654005902799044007420070105785090621980874478084784896800214457108687519405064002184501910484810050706146806749192781911979499520614196644287544406447451247181921799985910159195618146751426912297489409071864942219615679452080951465502252216028819101420917621178559566189177870810190697920771467221825625996615014215010680184477145492026054146659252014974428507125186660021124140881907104860017046496514509057962685610055081066587969981605747060840525714591028970641401109712062804090097595156771577004200078699060072005587601764594218741251471205429281918261861258674215791984148488291644706095752706957220917567116722910981690915280175506712748582222871825209252965725121081579151169882091444210067510114671101141267111169908658516198115019701651511685171417657618151556508849099898599821871455281116055076479185058902261854896021029000898570642046752590709154814165498594616071802709819940099244889575712828905920200260972997120844005742654895822911912597461667105816041428118810120182490175898524174417029112765618091771444010707469211201910020000080197621101100449290215160842444859607669848952286847841245526582141449576857262452441892029686426242410771226978028071189154411010446821252716201052652272111660196665571092547110557851760466820650109896526918620564769012570586056620185581007295606598764861179104511488501461116576867502494416680096265797877185560845529654126654085006140444018586769751456614068007002078776591044017127494704205622005089945610140711270004078547002699090814546646458807972708266840654228587856981052158089110657574067954571617752542021149557615814002501262285941102164715509792592109907965471761255176567511575178296664547791745011299614890104619947112962107140407518957059614589019089710111790429782856475002001986915140287080859904801094121472210179476477726224142548545400021571850061422881075850400600217518297986622471721591607716692547487589866549494501146540628421661917900197692656721461851067160965712091807618127166416274888800786925602902284721040117211860820419000422966171196177921117575114959501566049611862947265470642520081770067515906705020507280540567040086740510622224771589150495009844489000096040878076922599297805419541447477441842641298608099888687411260472156951621965864571021611598191195167151812974167729478672422924654166800980676928218280689964004824154017014161149658979409241217896907069779422062508221688957080798620001590776471651228905786015881617557829705200446042815126272007040146501977774160419906655418765979292144195215411418994854447145671811624991419111814809277771018618771411772075456545122077709212019051660962804909261601975988281610020166606528619026686006062705676000544776280050450777205547105859548702790814056240145171806246446267945612754181440785202262542127819449751824172058151114771199260618111467768796959701098119110771098704085910074641442822772604659470474587847787201927715280701767907707157210444700605700700492406901108050490160128404251219256517980694114528015147012047816417885185290928545201165819141965621149141415956258658655705526904965209858011850722426482919728584781161057777560688876446248246857926019515277148010480290058760758251047470916409610626760449256274204208020856611906254540072101505958450687724602901618766795240616042522577195429162991900645507799140070404028752628889609958794757291746426057455254079091451457111469410911949525191076020825202618798521887705842972591677812149699009019211697172727847684726860849001177024242916511005005168121164150189517029891922114517220118128069650117844087451960121228599171621110171144484640900890644954440061986907548516026027505298049187407866808818008510228004508504860825009002100219715518400605455007668282949004127765527929751754612955984684494618104746119966518581518420568511862186725211402810871121282789212507712629461229561989898915821167456270102181564622010496715188190970008119800497040720961006854066441949509790190699659552452005450580685501956720229219119119185680144901982059551002261505061920419947455085908102242955449597785779024742161727111724641415419478221818528624085140066604410258885698670540154706965747458550002521142107101545940516551790686627000799585115625784022988270720198987571415957811196458440059408750681216028764962867446047746491599505497274256269010490277819868259181465741268049256487985561451721478671101904688080406046555794986419270561872911748721120807601120029911067908627089408799062016295154100714248928007220126901475466847654576164774794675200490757155527819655621222926406160116158155907422020201187277605277219005561484255518792510141511984425122141576200610642506090497500865627109505919465897514101004822769006247405060256916078154781811528406679570611086150215044521274759245449454246828860611408414861776700961207151249140410272518607648216141411462151897576645216411767969011495019108575984421919862916421909949072062046468441170940026591840440780510008945257420995082965912285085558215725001071257012668002402929525220118726767562204154205161841604847565169998116141010029960780869092916040288400269104140792886215078424516709087000699282120660418471806555567252522567522861291042487761825829765157959847015622262914860014158722980514989650226291748788202714209222245119856264766914905562842501912757710284027998066165825488926488025456610172967026640765590429099456815065265105171829412701169110785178609040708667114965580404047690085781711086455870678120014587687126600489109095620099090610010291616152881484479099042517472261948045759114911405297614757481191567091101177517210080115590248510906692017671922011229094114676851422144771790907517004406619910400075111705471918550464490260655128162288244625759160000091072250807421821408805086572917715096828874782656995995744906617585441475221970968140800515598491754171818819994469748676265516582765848158845114277568790029095170281529716144562129640415211176006651012412006597558512761785818292041974844216080071910457618912049229279650198751872127267507981255470958904556057921221000546697499215610254947802490114195212182815109114079070860251522742995818072471625916685451000120948049470791191502670400282441860414262629548000448002670496248201792896476697585184271414251702969214889627668440121260927524960157996469256504916818160900121809290459588970695065049406004021665440755890045602882250545255640564482465151875471196218440965825007540885690941100015095261790780029741207665147909425902989695946995565761218656196722786256256125216420862869222104274889218654164802296780705765615144612046927906821207188177814211562821608961208068222468012248261177185896181409181901671672220888121511755600072798094004152970028780076670944474560104556417254070906979096122571429894671540578468788614445812014590571984922528471605049221242470141214780570455105008019086996000027604787081081754501192071412254908661918119529425786905076411006181519814189141596111854147546495569781018290097164651408407007070604112070599840452251610507027056205266012764848008407611800100527902054274628654006026745228651057065874882256981579267897669742205750596854408697450201410206724585020072452256426511410559240190274216248419140159989515194590944070469120914091870012645600162174288021092764579110657922955249887275846101264816999892256959688159205600101655256175678566722796619885782794848855814197518744545512965604404800966420557982906804052202770984294202500022576041807009476994159791594500069752148290066555661567874640054666564165474217045902521229542529169414599041608751201868179170214888689479151071617852902145292440771659495610510074210871426114974595615118498711757047101787957110422969066670214498617464595280824569445789772

Wynik jest cytatem 81:

"Hello, gorgeous." - Fanny Brice

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


16

79. Perl 5, używa nr .

$PRINT=lc
q|PRINT|and$Q=chr
0x22
and$C=q|C|and$ARPE=lc
q|ARPE|and$W=chr
0x20
and$DIEM=q|diem|and$T=chr
46
and$SEIZE=q|Seize|and$THE=q|the|and$DAY=lc
q|DAY|and$BOYS=lc
q|BOYS|and$MAKE=q|Make|and$YOUR=lc
q|YOUR|and$LIVES=lc
q|LIVES|and$EXTRA=lc
q|EXTRAORDINARY|and$JOHN=q|John|and$KEAT=q|Keating|and
eval
qq|$PRINT
q^$Q$C$ARPE$W$DIEM$T$W$SEIZE$W$THE$W$DAP,$W$BOYS$T$W$MAKE$W$YOUR$W$LIVES$W$EXTRA$T$Q$W-$W$JOHN$W$KEAT^|

Wynik to cytat 95:

"Carpe diem. Seize the day, boys. Make your lives extraordinary." - John Keating

Wcześniej zabronione: py3\" ';({s[)<+


Jako język TMTOWTDI Perl oferuje wiele sposobów na obejście ograniczeń. Metodą użytą tutaj jest skonstruowanie instrukcjiprint "that quote" jako łańcucha i jej ocenie.

Chociaż 'i "są zbanowane, Perl pozwala dodatkowo na wyrażanie ciągów za pomocą q«…»i qq«…». I chociaż ;jest to zabronione, ponieważ wszystkie stwierdzenia nie są fałszem, moglibyśmy użyć anddo połączenia ze sobą zestawień. Ponieważ wielkimi literami P, Y, Ssą nadal dozwolone, możemy umieścić p, y, sdo końcowego łańcucha za pomocą lcfunkcji (małymi literami), a chrmogą być wykorzystane, aby umieścić symbole "i .


Mogę nie
rozumieć

1
@G_Wilson: Wielkie i małe litery są różne.
kennytm

Przepraszam moja wina. Zapomniałem, że mają różne wartości ASCII.
GeoffWilson

„wszystkie stwierdzenia nie są fałszywe”: masz na myśli, że wszystkie te stwierdzenia nie są fałszywe, prawda? ( $foo=0jest oczywiście falsy.) W każdym razie bardzo miło; +1.
msh210

@ msh210 Tak, wszystkie te stwierdzenia nie są fałszywe.
kennytm

15

54. CaneCode (używa nie Q)

(Nowe linie i spacje nie są konieczne.)

                                 111111111111
                            1111111111111111111111
                         8111111111111111111111111111
                      111111111111111111111111118111111
                    1111811111111811111111111822222222222
                   222222222222222222222222222222222222222
                 222222222222222222222222222222222281111111
               111111111111111111111111111111111111111111111
              11111111111111822222222222222222222222222222222
             2222222222222222222222222222222281111111111111111
            111111111111111111111111111111111111111111111111111
           11111111118222281111181111111828222222222222222822222
          2222222222222222222222222222222222222222222222222222822
         222222222281111111111                 1111111111111111111
        1111111111111111111                      11111111111111111
       111111111111111111                          1111822222222222
      222222222228111111                            118111111111118
      2222222222222222                               222222222222222
     2222222222222222                                 22222222222222
    2222222222222222                                   22222228111111
    111111111111111                                    11111111111111
   111111111111111                                      1111111111111
   11822222222222                                        2222222222222
   2222222222222                                         2222222222222
  22222222222222                                         2811111111111
  1111111111111                                           111111111111
 1111111111111                                            1111111111111
 1111111111111                                             118222281111
 181111111828                                              222222222222
 222822222222                                              222222222222
 222222222222                                              222222222222
2222222222282                                              2222222222222
8111111111111                                              1111111111111
1111111111111                                              1111111111111
1111118111111                                              1111111111111
1118111111822                                               222222222222
2222222222222                                               222222222222
2222222222222                                               222222222222
2222222222222                                               222222228111
1111111111111                                              1111111111111
1111111111111                                              1111111111111
1111111111811                                              1111118111118
2222222222222                                              2222222222222
 222222222222                     2222                     2222222222222
 2222222222222                  22281111                   111111111111
 1111111111111                 1111111111                 1111111111111
 11111111111111                11111111111                8222222222222
  2222222222222               2222222222222              22222222222222
  22222222222222              22222222222222            22228111111111
   1111111111111              111111111111111           11111111111111
   11111111111111             1111111822282222         81111111111111
    11118222222222             2222282222222222      2222222222222222
    222222222222222            22222222222222222    2222222222811111
     111111111111111            11111111111111111  1111111111111111
     1111111111111111           11111111181811111822222222222281811
      11182222222222222          222222222222222222222222222222222
       22222222222222222          2222222282222222811111111111111
       1111111111111111111         11111111111111111111111111111
        1111111111111111111111111118222222222222222222228111111
         11111111182222222222222222222222222222222222222222222
          222222222222222222222222222222222222222281822811111
           1111111182222222222222811111111111111111111111111
            111111111111111181111111111111111111111181111111
             111822822228222222222222222222222222222222222222
               22222222222222222222222222222222281111111111111
                11111111111111111111111111111111111118111111111
                  1111118181111111811111818111111118222222222222
                   2281111111111181111118222222222222222222222222
                      22222222222222222222222222222222222222222222
                        222222281111111111111    1111111111111181111
                            111111111111          1111111811811111111
                                                    822222222222222222
                                                     222222222222222222
                                                      222222222222222222
                                                       222222222222222222
                                                        222281111111111111
                                                         111111111111111111
                                                           1111111111111111
                                                            111811111111111
                                                             11111111111111
                                                               11118222222
                                                                2222222811
                                                                 11111811
                                                                   1118

Wynik to cytat 71:

"Wait a minute, wait a minute. You ain't heard nothin' yet!" - Jakie Rabinowitz/Jack Robin

Wcześniej zabronione :"#&'()*+,-./037;<=>@[\]^_ deopsvxXyz{|}~


CaneCode to kolejna pochodna BF z odwzorowaniem:

  • 1 → +
  • 2 → -
  • 3 → <
  • 4 →>
  • 5 → [
  • 6 →]
  • 7 →,
  • 8 →.

Tylko uwaga: Pozostałe postacie to:

  • Symbolika: ! $ % : ? `
  • Liczby: 12 456 89
  • Duże litery: ABCDEFGHIJKLMNOP RSTUVW YZ
  • Małe litery: abc fghijklmn qr tu w

18
Jestem całkiem pewien, że widzę tam Q
Calvin's Hobbies

14

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.

a
a
cc

88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888c
cc
cc
cc
8c6ec6862e611a909aefef7133fc410dff7e22f63f7493b2f8e452888467b057b57bea88a311cadb514028e5cdc7397ab03a55e312d5a0a7d93b880f26cfd6c679f780c1f1ce3691cc9d92c228b0159a5f0f0c6a1a7dddec2791621b1782567e16273ff2019feb3d44320fec1073a536acc0b06462
cc
4
a
a8

a
ac
ac
a
aa
aa
a
aa
ac
aa
ac
aa
aa
c8
8
a8
cc
c8
aa
ca
a8
8
a8
4
ca
4
c8
cc
cc
ac
aa

a
c8
4
c
aa
c
8
a8
c4
a8
c8
8
c4
c8
a8
ac
aa

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.

  • Ma cyfry.
  • Każda cyfra, która ma 4109527714173620014271192135615819980149748934951677499623857818618801276212206327654950831404071330954232878836395346962954202538476535987403920483325378835064959624187891476909072253512354662379230835497647226755470473642747146485760293230336401802073590883942400000000000000000 * K cyfry do swojego prawa jest a. Więc ostatnia cyfra jest agdzie k = 0, a tam są 159321460184447640588063043795531819638245990121854536131792918542864566418397339281153516086677425424423723475531974684547855358001230183547851703274577276601612622258171727288003902331619018508731805969660163575803761844794365403871421372122820829226554024584224464882571689865777 z nich.
  • Każda cyfra, która nie znajduje się na tych pozycjach, to an 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:

"Frankly, my dear, I don't give a damn." - Rhett Butler

z wiodącym i końcowym znakiem nowej linii.

Wcześniej zabronione:

?!"#$%&'()*+,-./01235679:;<=>@[\]^_` AbBCdDeEfFgGhHiIjJklLmMnNoOpPqQrRstTuUvVWxXyYzZ{|}~

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

a       Start execution at 10.
a       The first byte of output cannot be suppressed without the minus character.
        But fortunately it can still output a leading newline,
        and this is allowed in the question.
cc      Input, not used.
0       Only used in the extracted code.
A  (*4) Data number A + 4, or the accumulator at run-time.
cc
cc
cc
B  (*8) Data number B.
cc
4  (*a) Start execution here. It moves A to *a8 at the first time,
        and the accumulator - 4 to the current position at later times.
a       Minus 4, which is the smallest addressable number defined at the beginning.
a8 (*c) The pointer for self-extraction. Initially it point to the position of A
        at run-time, and this instruction moves *4 there. Then it is decremented,
        and the memory before *a8 is used for storing the extracted code.
        Constant definitions:
0       *ac = current address - 4 = 9.
a
ac
ac      *aa = 5.
a
aa
aa      *aa = 1.
a
aa
ac      *ac = 8.
aa
ac
aa      *c8 = 0.
aa
c8
8       Check if B > A. True at the first time so the initializations could be done.
a8
cc
c8        If yes, *ca = -1 (just another constant), and skip the next instruction.
aa
ca
a8        If no (B <= A), A -= B.
8
a8
4       Increment the accumulator. It has no effects if B > A.
ca
4
c8      If B < A (before the A -= B if that is executed):
cc
cc
ac        Go back to the starting position.
aa
0
a       Reset the accumulator to 4 (which means 0 when writing to the target position).
c8
4
c       Decrement the pointer for extraction.
aa
c
8       Swap A and B and A -= B.
a8
c4
a8
c8
8
c4
c8
a8
ac      Go back to the starting position.
aa
0       Finally the extraction code overrides this field and change it to 4,
        making it a no-op, so the execution continues.
6e      Jump to the beginning of extracted code.
aa
0
(29 times 0, not used.)
a6(*60) The pointer for output. And this just output the character at the pointer.
3
1
60      Decrement the pointer for output.
aa
60
60      Check if there is still data to output.
6d
4
6e        If yes, continue the output loop.
aa
0
a9        If no, access the undefined address *a9 to end the program.
6f(*6d) The position of the end of output.
5e(*6e) The starting position of the output loop.
(The reversed data.)
X       The junk data at the beginning of the extraction.
A (*a8) Number A at run-time.

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.


13

78. Mathematica, używa nr @

2986092695862452869648821144242466624048554924749885449420879769410086580524-10000011000000001010001000000000000000000000000000000001//#/87790498804444451827485960720854800964024844465254951684711241427814652487~Subtract~100001101000000000000000000000000001010000001000000000000000001000000&//ContinuedFraction//FromCharacterCode

Wynik to cytat 76:

"Hasta la vista, baby." - The Terminator

Wcześniej zabronione: py3\" ';({s[)<+.

Wygenerowano tak:

str = "\"Hasta la vista, baby.\" - The Terminator";
chrs = ToCharacterCode @ str;
fraction = FromContinuedFraction @ chrs;
n = Numerator @ fraction;
d = Denominator @ fraction;
ndiff = Boole[# == 3]& /@ IntegerDigits @ n // FromDigits;
ddiff = Boole[# == 3]& /@ IntegerDigits @ d // FromDigits;
n2 = n + ndiff;
d2 = d + ddiff;

Program jest wtedy:

n2 - ndiff // # / d2 ~ Subtract ~ ddiff & // ContinuedFraction // FromCharacterCode

o wartościach włożonej n2, ndiff, d2i ddiffi wszystkie przestrzenie usunięte.


Mój oryginalny pomysł był w użyciu ToString, FromDigits, IntegerDigits, Partitioni FromCharacterCode. Jednak zarówno FromDigitsi IntegerDigitsma sw nich, które nie zauważyłem.


5
Cholera, pracował nad Befunge.
PurkkaKoodari

11

72. Zestaw x86_64 (nasm), używa nr *

BITS    64
extern  _exit
global  main

q:  dd  21111642486/11
    dd  7621846918/14
    dd  44456111856/24
    dd  572619118
    dd  21141585696/17
    dd  5982995755/11
    dd  49922657928/26
    dd  27216242192/16
    dd  11&~1

main:
    dd  89851824/6
    db  255
    db  255
    db  255
    db  72
    db  184
    dq  q
    db  72
    db  274/2
    db  198
    dd  2416/2
    db  2
    dd  87241517818/26
    dd  17268/2
    db  2/4
    db  15
    db  5

    db  49
    db  255
    call    _exit

Wykorzystuje 61 zakładek i 36 nowych linii.

Wynik jest cytatem 68:

"Here's Johnny!" - Jack Torrance

Wcześniej zabronione: py3\" ';({s[)<+.@=-,X0

Używa writewywołania systemowego z numerem 0x2000001, który prawdopodobnie działa tylko w systemie OS X. Składanie, łączenie i uruchamianie:

nasm -f macho64 codegolf.asm
ld -e main codegolf.o -lc
./a.out

Najlepsza. Zacytować. Zawsze. Sława!
Conor O'Brien,

11

71. GolfScript, używa nie /

:?546]84]616]869]121]295]114]1125]288]872]2149]882]2661]289]1826]544]45]1568]67]97]2162]111]876]1824]65]622]878]2917]2592]582]2418]4197]4965]1644]617]1646]615]?^

Wynik jest cytatem 69:

"They're here!" - Carol Anne Freeling

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ących 0i 3. 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.


10

91. Cudowny , używa nie\

6D......69
72726F7169
+1+1......
7460204261
......+1..
4C6E726574
2121202D20
6F65206974
206E757420
22526E6170
..+1......

Wynik to cytat 96:

"Snap out of it!" - Loretta Castorini

Wcześniej zabronione :py3


10

95. Python

print('"I\'m the king of the world!" - Jack Dawson')

Dane wyjściowe to cytat 100:

"I'm the king of the world!" - Jack Dawson

Żadne zabronione.


20
Różnica głosów między tą odpowiedzią a tą odpowiedzią jest zagadką, którą jest Stack Exchange.
Calvin's Hobbies

10

73. AppleScript, używa nie 0

(Wszystkie „spacje” są „tabulatorami”, jak dopuszcza OP. Istnieje 25 tabulatorów i 8 nowych linii).

Set c   to  146/2&115&2*16&525/5&116&2*16&115&97&51*2&1111/11&126/2&2*17&2*16&45&2*16&68&114&46&2*16&67&2*52&114&525/5&115&116&525/5&97&2*55&2*16&166/2&122&1111/11&2*54&2*54
Set e   to  2*17
Set d   to  aScii   character   of  e
rePeat  with    i   in  c
Set d   to  d&aScii character   of  i
end rePeat
diSPlaY alert   d

Wynik jest wyceniony 70:

"Is it safe?" - Dr. Christian Szell

Wcześniej zabronione :py3\" ';({s[)<+.@=-,X


Tutaj najpierw konstruujemy zmienną, cktóra jest listą kodów ASCII cytatu. W AppleScript number & numbertworzy listę 2-elementową {number, number}i list & numberdołą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 cna ciąg d. Ponownie używamy &tutaj, ponieważ string & stringjest to konkatenacja. AppleScript nie rozróżnia wielkich i małych liter, więc moglibyśmy skorzystać diSPlaYz obejścia pysznaków.


Ach, próbowałem też udzielić odpowiedzi AppleScript, ale nie wiedziałem, że słowa kluczowe nie uwzględniają wielkości liter, więc nie mogłem użyć seti nie udało mi się. Miałem odpowiedź na cytat # 62, ale nie mogę tego teraz użyć; P
Tyilo

10

57. Burleska (nie używa |)

Nowe wiersze służą wyłącznie wyjaśnieniu, ale zakładki są konieczne. Istnieją 4 zakładki.

??9!!JJJJJJJJJJJJJJJJ
?iJ
?iJJ
?i?i?i?i?iJJ
?i?i?i?i?iJJ
?i
61118256541846584114424692216989142925962811646445822862641986546895526246185888152124859614142688
    41224222121111121111121111211111111114221112222112121211424411124111124222222211114424211211111121
$$6tdfCtiB!
j54ia
j5ia
j29ia
j9ia
j41?d?d?d?dia
j1?dia
j59ia
j59ia
j8?dia
j14ia
j21?dia
j24ia
j26ia
j41?d?d?d?dia
j41ia
j48ia
j52ia
j55ia
j61?dia
j65ia
j68?dia
j69?i?i?i?i?iia
j69?i?i?i?i?i?i?iia
j82ia
86
    29B!ZZ1!!1ia
61
    21B!ZZ1!!81?d?d?dia
48
    26B!ZZ1!!85ia
Q

Wynik jest cytatem 87:

"Sawyer, you're going out a youngster, but you've got to come back a star!" - Julian Marsh

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:

  1. 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:

       awyeryouregoingoutayoungsterbutyouvegottocomebackastarulianarsh₃₆
    == 3379063095879820583038345369081212641008420750861587542962343112066870047037314854758539\
       9600704049₁₀
    
  2. 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…

  3. 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 ( ).

  4. W inkrementacja również używać niedozwolonych znaków .+, .-jednakże istnieją alternatywy ?i, ?dktóre mają ten sam efekt. W ten sposób moglibyśmy wygenerować z tego całe spektrum ASCII.


10

34. Kod maszynowy 6502 + Monitor systemu Apple II (nie używa b)

(Używa 1 karty)

262G    a!mwfl%mDmqli!flqlPmqljjPfuGf!T%wGK!96H4wGH4K2O!R!F%w9uGwGr?wGi299D!H2T%wGw%K2K!K!96F!9%jjjjjflPwP!fmjjjjjPwfmfm6m%lHjjPwflflflflclclclclfljclflclVljHHjjPqPDClflClflflclclclclclclflflflflflflflflflflflflflflflflflflflflflfljj6mP6

Wyjście jest cytatem 41:

"We rob banks." - Clyde Barrow

Wcześniej zabronione :"#$&'()*+,-./01357:;<=>@[\]^_ ABdeEghIJLMNopQksUvWxXyYzZ{|}~

Pozostałe postacie:

  • Symbolika: ! % ? `
  • Liczby: 2 4 6 89
  • Duże litery: CD FGH K OP RST V
  • Małe litery: 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:

; Branch here when done to return (patched from E1)
0205-   60          RTS
;
; Output loop: at this point, $EC-$ED points to the beginning of the
; phrase, which starts at 0x21F. Each character is encoded as 2 bytes.
; The ASCII value (with high bit set) is determined by doing:
; 2 - Byte1 - 0xA1 - Byte2, where subtraction with borrow is used (and
; borrow is always set for the first subtraction).
;
; Monitor routine to output (patched from A1 ED F7)
0206-   20 ED FD    JSR   $FDED
0209-   E6 EC       INC   $EC
020B-   A5 ED       LDA   $ED
020D-   C4 ED       CPY   $ED
020F-   F1 EC       SBC   ($EC),Y
0211-   E9 A1       SBC   #$A1
0213-   E6 EC       INC   $EC
0215-   F1 EC       SBC   ($EC),Y
0217-   D0 ED       BNE   $0206
; Computed value 0. We're done, so branch to the return instruction.
0219-   F1 EC       SBC   ($EC),Y
021B-   EA          NOP   
021C-   EA          NOP   
021D-   D0 E6       BNE   $0205
;
; Encoded string resides from 0x21F-0x25C
;
025D-   EA          NOP   
025E-   EA          NOP   
025F-   EA          NOP   
0260-   EA          NOP   
0261-   EA          NOP
; Execution begins here
; First, set up $EC-$ED to point to 0x200. No writes, so
; increment until the values are 0, then increment MSB twice.
0262-   E6 EC       INC   $EC
0264-   D0 F7       BNE   $025D
0266-   D0 A1       BNE   $0209 ; Boing!
0268-   E6 ED       INC   $ED
026A-   EA          NOP   
026B-   EA          NOP   
026C-   EA          NOP   
026D-   EA          NOP   
026E-   EA          NOP   
026F-   D0 F7       BNE   $0268
0271-   E6 ED       INC   $ED
0273-   E6 ED       INC   $ED
; Zero out A, X, Y registers
0275-   B6 ED       LDX   $ED,Y
0277-   A5 EC       LDA   $EC
0279-   C8          INY   
027A-   EA          NOP   
027B-   EA          NOP   
027C-   D0 F7       BNE   $0275
; Patch up tab character to make it a return so Monitor doesn't
; parse anything after the "262G"
027E-   E6 EC       INC   $EC
0280-   E6 EC       INC   $EC
0282-   E6 EC       INC   $EC
0284-   E6 EC       INC   $EC
; "isc" is undocumented instruction that increments memory then
; subtracts the result from accumulator.
0286-   E3 EC       isc   ($EC,X)   
0288-   E3 EC       isc   ($EC,X)   
028A-   E3 EC       isc   ($EC,X)   
028C-   E3 EC       isc   ($EC,X)   
028E-   E6 EC       INC   $EC
0290-   EA          NOP   
; Patch up RTS and JSR instructions at 0x205 and 0x206
; This loop adds 0x80 to the original values to get close
0291-   E3 EC       isc   ($EC,X)   
0293-   E6 EC       INC   $EC
0295-   E3 EC       isc   ($EC,X)   
0297-   D6 EC       DEC   $EC,X
0299-   EA          NOP   
029A-   C8          INY   
029B-   C8          INY   
029C-   EA          NOP   
029D-   EA          NOP   
029E-   D0 F1       BNE   $0291
02A0-   D0 C4       BNE   $0266 ; Boing!
; Finish patching RTS and JSR
; "dcp" undocumented "decrement then compare"
02A2-   C3 EC       dcp   ($EC,X)
02A4-   E6 EC       INC   $EC
02A6-   C3 EC       dcp   ($EC,X)
; Patch address of character output call F7ED -> FDED
02A8-   E6 EC       INC   $EC
02AA-   E6 EC       INC   $EC
02AC-   E3 EC       isc   ($EC,X)   
02AE-   E3 EC       isc   ($EC,X)   
02B0-   E3 EC       isc   ($EC,X)   
02B2-   E3 EC       isc   ($EC,X)   
02B4-   E3 EC       isc   ($EC,X)   
02B6-   E3 EC       isc   ($EC,X)   
; Move pointer up to start of encoded string
02B8-   E6 EC       INC   $EC
02BA-   E6 EC       INC   $EC
02BC-   E6 EC       INC   $EC
02BE-   E6 EC       INC   $EC
02C0-   E6 EC       INC   $EC
02C2-   E6 EC       INC   $EC
02C4-   E6 EC       INC   $EC
02C6-   E6 EC       INC   $EC
02C8-   E6 EC       INC   $EC
02CA-   E6 EC       INC   $EC
02CC-   E6 EC       INC   $EC
02CE-   E6 EC       INC   $EC
02D0-   E6 EC       INC   $EC
02D2-   E6 EC       INC   $EC
02D4-   E6 EC       INC   $EC
02D6-   E6 EC       INC   $EC
02D8-   E6 EC       INC   $EC
02DA-   E6 EC       INC   $EC
02DC-   E6 EC       INC   $EC
02DE-   E6 EC       INC   $EC
02E0-   E6 EC       INC   $EC
02E2-   E6 EC       INC   $EC
02E4-   EA          NOP   
02E5-   EA          NOP   
02E6-   B6 ED       LDX   $ED,Y
; Setup done, bounce our way up to the output loop at 0x209
02E8-   D0 B6       BNE   $02A0

10

14. Kod maszynowy PDP-11, wykorzystuje nr O

4
rar
raw
rrrlratarltararltararltararlratarltararlratarlratarltararlratarlratarltararlratarltararlratarltararlratarltararlratarltararlra4cw
rrrlratarlratarltararlratarlratarlratarltararltararlratarlratarlratarltararlra8cw
rrrltararlratarlratarlratarltararltararltararlratarlratarltararlratarlratarltararltararltararlralaw
rrrlratarltararlratarltararltararlratarltararltararlratarltararlratarltararlratarlratarltararlratarltararlratarltararlranaw
rrrltararltararltararltararltararltararlratarltararlratarlratarltararlratarlratarltararltararlrarcw
rrrltararltararltararltararlratarltararlratarltararltararlratarlratarlratarltararltararltararlratcw
rrrlratarltararltararltararlratarlratarltararlratarltararltararlratarlratarltararlratarltararlratarltararlra449nlarc9nnatcrl4K4KDcDcDcDc    u444444DuS4S4S4SaS4S4S4S4SaDuc4cac4c4c4c4caKac4caDuSaKaKaSaSaS4KaSaS4S4SaKaSaDuc4c4cacacaKac4c4cac4DuS4S4S4S4S4S4S4S4S4Ducac4c4c4c4c4caKacacaKaDuKaSaKaSaKaSaKaKaSaS4S4S4S4KaSaw
rrrl4K4Kw
rrw
rruulnau8DK
KcScu
wrl48494444SD44K44D4n44SD44K44D4l84KD484D9K4DD4449D444D9K444D44DDD44DDD44K4884444DD944SDD8

r8wt44ucD8
uK8Scnn wuKwK4uauK4luwKwKu4wcnn wuKwK4uauK4lwwKwKr8wa8uSu44DcDrnurwrwlKwlltuwaKcltwwwnSwrDrturwrwlKwlKatwtKwlulwtnnwnDltrrnuntKwlcnwtcDcrDKnlSKrllluwtwwwDltwannwn8na

Wyjście jest cytatem 28:

"Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund

Wcześniej zabronione :

?!"#$%&'()*+,-./0123567:;<=>@[\]^_` AbBCdeEFfgGhHiIjJkLmMNopPqQRsTUvVWxXyYzZ{|}~

Pozostałe postacie:

  • Liczby: 4 8 9
  • Duże litery: D K S
  • Małe litery: a c l n r t u w

Kilka szczegółów technicznych:

  • Wszystkie podziały linii używają stylu uniksowego (1 bajt 0x0a)
  • Na końcu pliku nie ma podziału wiersza (choć nie powinno to mieć znaczenia)
  • Istnieją 3 znaki tabulacji
  • Rozmiar pliku to 1260 bajtów

Aby zweryfikować ten kod, użyłem symulatora Ersatz-11 . Aby uruchomić kod, wpisz kod do pliku test.pdp, uruchom symulator i wpisz:

load test
go

Wynik:

...
E11>load test
E11>go
"Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund

%HALT
...

Kod źródłowy (wszystkie liczby są w formacie ósemkowym):

clr 60562(r4)
;
com 60562(r2)
com 71162(pc) ; nop
;
add 60562(r1), 60564(r2) ; a = ffff b = ffff
add 60564(r1), 60562(r2) ; a = fffe b = ffff
add 60564(r1), 60562(r2) ; a = fffd b = ffff
add 60564(r1), 60562(r2) ; a = fffc b = ffff
add 60562(r1), 60564(r2) ; a = fffc b = fffb
add 60564(r1), 60562(r2) ; a = fff7 b = fffb
add 60562(r1), 60564(r2) ; a = fff7 b = fff2
add 60562(r1), 60564(r2) ; a = fff7 b = ffe9
add 60564(r1), 60562(r2) ; a = ffe0 b = ffe9
add 60562(r1), 60564(r2) ; a = ffe0 b = ffc9
add 60562(r1), 60564(r2) ; a = ffe0 b = ffa9
add 60564(r1), 60562(r2) ; a = ff89 b = ffa9
add 60562(r1), 60564(r2) ; a = ff89 b = ff32
add 60564(r1), 60562(r2) ; a = febb b = ff32
add 60562(r1), 60564(r2) ; a = febb b = fded
add 60564(r1), 60562(r2) ; a = fca8 b = fded
add 60562(r1), 60564(r2) ; a = fca8 b = fa95
add 60564(r1), 60562(r2) ; a = f73d b = fa95
add 60562(r1), 60564(r2) ; a = f73d b = f1d2
add 60564(r1), 60562(r2) ; a = e90f b = f1d2
add 60562(r1), 61464(r2) ; contains patch1
com 71162(pc)
add 60562(r1), 60564(r2) ; a = e90f b = dae1
add 60562(r1), 60564(r2) ; a = e90f b = c3f0
add 60564(r1), 60562(r2) ; a = acff b = c3f0
add 60562(r1), 60564(r2) ; a = acff b = 70ef
add 60562(r1), 60564(r2) ; a = acff b = 1dee
add 60562(r1), 60564(r2) ; a = acff b = caed
add 60564(r1), 60562(r2) ; a = 77ec b = caed
add 60564(r1), 60562(r2) ; a = 42d9 b = caed
add 60562(r1), 60564(r2) ; a = 42d9 b = 0dc6
add 60562(r1), 60564(r2) ; a = 42d9 b = 509f
add 60562(r1), 60564(r2) ; a = 42d9 b = 9378
add 60564(r1), 60562(r2) ; a = d651 b = 9378
add 60562(r1), 61470(r2) ; contains patch2
com 71162(pc)
add 60564(r1), 60562(r2) ; a = 69c9 b = 9378
add 60562(r1), 60564(r2) ; a = 69c9 b = fd41
add 60562(r1), 60564(r2) ; a = 69c9 b = 670a
add 60562(r1), 60564(r2) ; a = 69c9 b = d0d3
add 60564(r1), 60562(r2) ; a = 3a9c b = d0d3
add 60564(r1), 60562(r2) ; a = 0b6f b = d0d3
add 60564(r1), 60562(r2) ; a = dc42 b = d0d3
add 60562(r1), 60564(r2) ; a = dc42 b = ad15
add 60562(r1), 60564(r2) ; a = dc42 b = 8957
add 60564(r1), 60562(r2) ; a = 6599 b = 8957
add 60562(r1), 60564(r2) ; a = 6599 b = eef0
add 60562(r1), 60564(r2) ; a = 6599 b = 5489
add 60564(r1), 60562(r2) ; a = ba22 b = 5489
add 60564(r1), 60562(r2) ; a = 0eab b = 5489
add 60564(r1), 60562(r2) ; a = 6334 b = 5489
add 60562(r1), 60554(r2) ; contains addr of patch1
com 71162(pc)
add 60562(r1), 60564(r2) ; a = 6334 b = b7bd
add 60564(r1), 60562(r2) ; a = 1af1 b = b7bd
add 60562(r1), 60564(r2) ; a = 1af1 b = d2ae
add 60564(r1), 60562(r2) ; a = ed9f b = d2ae
add 60564(r1), 60562(r2) ; a = c04d b = d2ae
add 60562(r1), 60564(r2) ; a = c04d b = 92fb
add 60564(r1), 60562(r2) ; a = 5348 b = 92fb
add 60564(r1), 60562(r2) ; a = e643 b = 92fb
add 60562(r1), 60564(r2) ; a = e643 b = 793e
add 60564(r1), 60562(r2) ; a = 5f81 b = 793e
add 60562(r1), 60564(r2) ; a = 5f81 b = d8bf
add 60564(r1), 60562(r2) ; a = 3840 b = d8bf
add 60562(r1), 60564(r2) ; a = 3840 b = 10ff
add 60562(r1), 60564(r2) ; a = 3840 b = 493f
add 60564(r1), 60562(r2) ; a = 817f b = 493f
add 60562(r1), 60564(r2) ; a = 817f b = cabe
add 60564(r1), 60562(r2) ; a = 4c3d b = cabe
add 60562(r1), 60564(r2) ; a = 4c3d b = 16fb
add 60564(r1), 60562(r2) ; a = 6338 b = 16fb
add 60562(r1), 60556(r2) ; contains addr of patch2
com 71162(pc)
add 60564(r1), 60562(r2) ; a = 7a33 b = 16fb
add 60564(r1), 60562(r2) ; a = 912e b = 16fb
add 60564(r1), 60562(r2) ; a = a829 b = 16fb
add 60564(r1), 60562(r2) ; a = bf24 b = 16fb
add 60564(r1), 60562(r2) ; a = d61f b = 16fb
add 60564(r1), 60562(r2) ; a = ed1a b = 16fb
add 60562(r1), 60564(r2) ; a = ed1a b = 0415
add 60564(r1), 60562(r2) ; a = f12f b = 0415
add 60562(r1), 60564(r2) ; a = f12f b = f544
add 60562(r1), 60564(r2) ; a = f12f b = e673
add 60564(r1), 60562(r2) ; a = d7a2 b = e673
add 60562(r1), 60564(r2) ; a = d7a2 b = be15
add 60562(r1), 60564(r2) ; a = d7a2 b = 95b7
add 60564(r1), 60562(r2) ; a = 6d59 b = 95b7
add 60564(r1), 60562(r2) ; a = 0310 b = 95b7
add 60562(r1), 61562(r2) ; contains addr of cmd1
com 71162(pc)
add 60564(r1), 60562(r2) ; a = 98c7 b = 95b7
add 60564(r1), 60562(r2) ; a = 2e7e b = 95b7
add 60564(r1), 60562(r2) ; a = c435 b = 95b7
add 60564(r1), 60562(r2) ; a = 59ec b = 95b7
add 60562(r1), 60564(r2) ; a = 59ec b = efa3
add 60564(r1), 60562(r2) ; a = 498f b = efa3
add 60562(r1), 60564(r2) ; a = 498f b = 3932
add 60564(r1), 60562(r2) ; a = 82c1 b = 3932
add 60564(r1), 60562(r2) ; a = bbf3 b = 3932
add 60562(r1), 60564(r2) ; a = bbf3 b = f525
add 60562(r1), 60564(r2) ; a = bbf3 b = b118
add 60562(r1), 60564(r2) ; a = bbf3 b = 6d0b
add 60564(r1), 60562(r2) ; a = 28fe b = 6d0b
add 60564(r1), 60562(r2) ; a = 9609 b = 6d0b
add 60564(r1), 60562(r2) ; a = 0314 b = 6d0b
add 60562(r1), 61564(r2) ; contains addr of cmd2
com 71162(pc)
add 60562(r1), 60564(r2) ; a = 0314 b = 701f
add 60564(r1), 60562(r2) ; a = 7333 b = 701f
add 60564(r1), 60562(r2) ; a = e352 b = 701f
add 60564(r1), 60562(r2) ; a = 5371 b = 701f
add 60562(r1), 60564(r2) ; a = 5371 b = c390
add 60562(r1), 60564(r2) ; a = 5371 b = 1701
add 60564(r1), 60562(r2) ; a = 6a72 b = 1701
add 60562(r1), 60564(r2) ; a = 6a72 b = 8173
add 60564(r1), 60562(r2) ; a = ebe5 b = 8173
add 60564(r1), 60562(r2) ; a = 6d58 b = 8173
add 60562(r1), 60564(r2) ; a = 6d58 b = eecb
add 60562(r1), 60564(r2) ; a = 6d58 b = 5c23
add 60564(r1), 60562(r2) ; a = c97b b = 5c23
add 60562(r1), 60564(r2) ; a = c97b b = 259e
add 60564(r1), 60562(r2) ; a = ef19 b = 259e
add 60562(r1), 60564(r2) ; a = ef19 b = 14b7
add 60564(r1), 60562(r2) ; a = 03d0 b = 14b7
add 60562(r1), 32064(r2) ; contains value of r3
add @60554(r0), @61562(r1)
add @60556(r0), @61564(r1)
;
add 45464(r1), 45464(r2) ; nop
add (r5), r4
add (r5), r4
add (r5), r4
add (r5), r4
ash (r1), r4
;
; must be at address 0x310 (01420)
.word 32064 ; patch it with 0xe90f - it becomes...
            ; mov 32064(r5), r3
.word 32064
.word 32064 ; patch it with 0xd651 - it becomes...
            ; inc r5
;
; patch the patcher
;
ash r4, r5
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
add r5, (r3)+ ; [3] = 0x443c
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
add r5, (r3)+ ; [8] = 0x727b
ash r4, r5
bit (r1)+, -(r3)
add r5, -(r3) ; [7] = 0x0a85
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
add r5, -(r3) ; [2] = 0x7571
add r5, (r3) ; [2] = 0x7581
bit (r1)+, -(r3)
add r5, -(r3) ; [0] = 0x7585
ash r4, r5
add r5, (r3)+ ; [0] = 0x75c5
add r5, (r3) ; [1] = 0x6eac
add r5, (r3) ; [1] = 0x6eec
add r5, (r3)+ ; [1] = 0x6f2c
add r5, (r3)+ ; [2] = 0x75c1
bit (r1)+, (r3)+
add r5, (r3) ; [4] = 0x0a8b
add r5, (r3)+ ; [4] = 0x0acb
bit (r1)+, (r3)+
bit (r1)+, (r3)+
add r5, (r3)+ ; [7] = 0x0ac5
add r5, (r3) ; [8] = 0x72bb
add r5, (r3)+ ; [8] = 0x72fb
ash r4, r5
bit (r1)+, -(r3)
bit (r1)+, -(r3)
add r5, -(r3) ; [6] = 0x6453
add r5, -(r3) ; [5] = 0x644b
add r5, -(r3) ; [4] = 0x0bcb
add r5, (r3) ; [4] = 0x0ccb
bit (r1)+, -(r3)
bit (r1)+, -(r3)
add r5, -(r3) ; [1] = 0x702c
bit (r1)+, -(r3)
ash r4, r5
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
ash r4, r5
add r5, -(r3) ; [8] = 0x82fb
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
add r5, -(r3) ; [2] = 0x85c1
add r5, (r3) ; [2] = 0x95c1
add r5, -(r3) ; [1] = 0x802c
add r5, -(r3) ; [0] = 0x85c5
add r5, (r3) ; [0] = 0x95c5
ash r4, r5
add r5, (r3) ; [0] = 0xd5c5
add r5, (r3)+ ; [0] = 0x15c5
add r5, (r3) ; [1] = 0xc02c
add r5, (r3)+ ; [1] = 0x002c
add r5, (r3) ; [2] = 0xd5c1
add r5, (r3)+ ; [2] = 0x15c1
add r5, (r3) ; [3] = 0x843c
add r5, (r3) ; [3] = 0xc43c
add r5, (r3)+ ; [3] = 0x043c
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
add r5, (r3) ; [8] = 0xc2fb
add r5, (r3)+ ; [8] = 0x02fb
;
com 71162(pc)
add 45464(r1), 45464(r2) ; nop
com 71162(pc)
com 71162(pc)
;
; ------------------------
; must be at address 0x3d0 (01720)
.word 072565
.word 067154
.word 072541
.word 042070
.word 005113
.word 061513
.word 061523
.word 005165
.word 071167
; After patching, this code becomes...
; mov #51, r5
; mov #002074, r1
; patch_loop:
; asl (r3)
; add (r1)+, (r3)
; add (r1)+, (r3)+
; dec r5
; bne patch_loop
;
.byte 154, 064
.byte 070, 064
.byte 071, 064
.byte 064, 064
.byte 064, 123
.byte 104, 064
.byte 064, 113
.byte 064, 064
.byte 104, 064
.byte 156, 064
.byte 064, 123
.byte 104, 064
.byte 064, 113
.byte 064, 064
.byte 104, 064
.byte 154, 070
.byte 064, 113
.byte 104, 064
.byte 070, 064
.byte 104, 071
.byte 113, 064
.byte 104, 104
.byte 064, 064
.byte 064, 071
.byte 104, 064
.byte 064, 064
.byte 104, 071
.byte 113, 064
.byte 064, 064
.byte 104, 064
.byte 064, 104
.byte 104, 104
.byte 064, 064
.byte 104, 104
.byte 104, 064
.byte 064, 113
.byte 064, 070
.byte 070, 064
.byte 064, 064
.byte 064, 104
.byte 104, 071
.byte 064, 064
.byte 123, 104
.byte 104, 070
;
; After patching, this code becomes...
; mov #32, r1
; mov #002006, r0
;out_loop:
; tstb @#0177564
; bpl out_loop
; mov (r0),@#0177566
; swab (r0)
;out_wait:
; tstb @#0177564
; bpl out_wait
; mov (r0)+,@#0177566
; dec r1
; bpl out_loop
; halt
; "Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund
;
.byte 12, 12 ; linebreaks for "readability"
.byte 162, 070
.byte 167, 164
.byte 064, 064
.byte 165, 143
.byte 104, 070
.byte 012, 165
.byte 113, 070
.byte 123, 143
.byte 156, 156
.byte 011, 167
.byte 165, 113
.byte 167, 113
.byte 064, 165
.byte 141, 165
.byte 113, 064
.byte 154, 165
.byte 167, 113
.byte 167, 113
.byte 165, 064
.byte 167, 143
.byte 156, 156
.byte 011, 167
.byte 165, 113
.byte 167, 113
.byte 064, 165
.byte 141, 165
.byte 113, 064
.byte 154, 167
.byte 167, 113
.byte 167, 113
.byte 162, 070
.byte 167, 141
.byte 070, 165
.byte 123, 165
.byte 064, 064
.byte 104, 143
.byte 104, 162
.byte 156, 165
.byte 162, 167
.byte 162, 167
.byte 154, 113
.byte 167, 154
.byte 154, 164
.byte 165, 167
.byte 141, 113
.byte 143, 154
.byte 164, 167
.byte 167, 167
.byte 156, 123
.byte 167, 162
.byte 104, 162
.byte 164, 165
.byte 162, 167
.byte 162, 167
.byte 154, 113
.byte 167, 154
.byte 113, 141
.byte 164, 167
.byte 164, 113
.byte 167, 154
.byte 165, 154
.byte 167, 164
.byte 156, 156
.byte 167, 156
.byte 104, 154
.byte 164, 162
.byte 162, 156
.byte 165, 156
.byte 164, 113
.byte 167, 154
.byte 143, 156
.byte 167, 164
.byte 143, 104
.byte 143, 162
.byte 104, 113
.byte 156, 154
.byte 123, 113
.byte 162, 154
.byte 154, 154
.byte 165, 167
.byte 164, 167
.byte 167, 167
.byte 104, 154
.byte 164, 167
.byte 141, 156
.byte 156, 167
.byte 156, 070
.byte 156, 141

Ł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):

mov #32, r1
mov #002006, r0
out_loop:
 tstb @#0177564
 bpl out_loop
 mov (r0),@#0177566
 swab (r0)
out_wait:
 tstb @#0177564
 bpl out_wait
 mov (r0)+,@#0177566
 dec r1
 bpl out_loop
 halt
 ----- "Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund

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:

code = 2 * a + b + c

Patchowanie (rozszyfrowywanie) kodu:

 mov #51, r5
 mov #002074, r1
patch_loop:
 asl (r3)
 add (r1)+, (r3)
 add (r1)+, (r3)+
 dec r5
 bne patch_loop

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)+i add r5, -(r3)- a jedynymi rejestrami, które można było użyć w ten sposób, były r3i r5. 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:

mov 32064(r5), r3
inc r5

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”:

... (much preparation here)
add @60554(r0), @61562(r1)
add @60556(r0), @61564(r1)

Aby uruchomić te dwie instrukcje, potrzeba sporo przygotowania:

  • Przechowuj wartość łatki ( patch1) w pamięci
  • Przechowuj wskaźnik do maski krosującej w pamięci
  • Zapisz wskaźnik do instrukcji, która ma zostać załatana w pamięci

Aby wygenerować wszystkie te stałe, użyłem następujących instrukcji:

add 60562(r1), 60564(r2) ; add a to b
add 60564(r1), 60562(r2) ; add b to a

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):

clr offset(rN)    - a no-op; its machine code is used to obtain the number 2
com offset(rN)    - used to obtain the number -1
add offset1(rN), offset2(rM) -  used for arithmetic
add @offset1(rN), @offset2(rM)
com offset(pc)    - a no-op (it actually writes junk to memory)
add (r5), r4      - one of a few "sane" instructions!
ash r4, r5        - another useful sane instruction
bit ...           - used for its only side effect - increment or decrement
add r5, (r3)+     }
add r5, (r3)      } By luck, all of these commands can be used!
add r5, -(r3)     }

10

7. 23 , używa nrl

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKK

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:

"I'm gonna make him an offer he can't refuse." - Vito Corleone

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,34,73,39,109,32,103,111,110,110,97,32,109,97,107,101,32,104,105,109,32,97,110,32,111,102,102,101,114,32,104,101,32,99,97,110,39,116,32,114,101,102,117,115,101,46,34,32,45,32,86,105,116,111,32,67,111,114,108,101,111,110,101

17,62instruuje 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 Kz każdej linii.

Aby przetestować kod, wklej go w obszarze Źródło , naciśnij, Enteraby wstawić końcowe podawanie linii, wpisz 23w obszarze Konsoli (aby przełączyć z domyślnej notacji 23.dezsy na automatyczne wykrywanie) i kliknij Run Interpreter!.


9

66 - Pyth, używa nie e

DSGRjkmCdGJC96P:Sj4142h118J:Sj9927h112J:Sjt11641t112J:Sj11154t115J:SjxT14142t122J:Sj4128h125J:Sj11154t115J:Sj4128h125J:Sj11196t112J:Sjt14254t122J:Sj12195t112J:Sj12752t114J:Sj5248h111J:Sj4142h118J:Sj4128h125J:Sj5181h112J:Sj4128h125J:Sj9116t111J:Sj12528h111J:Sj14126h121J:Sj11154t115J:Sj4128h125J:Sj8566t111J:Sj12528h111J:Sj11976t111J:Sj11646t111J:Sj12416h111J:Sj11711t116JJ

Wynik to cytat 62:

"What a dump." - Rosa Moline

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 jbazy 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ą Sfunkcję.

Wyjaśnienie:

DSGRjkmCdG                 define S, which makes a string out of a list of ASCII numbers
JC96                       J = "`"
P                          print all but the last character of
:Sj4142h118J               "` <- `
:Sj9927h112J               W` <- `
:Sjt11641t112J             h` <- `
:Sj11154t115J              a` <- `
:SjxT14142t122J            t` <- `
:Sj4128h125J                ` <- `
:Sj11154t115J              a` <- `
:Sj4128h125J                ` <- `
:Sj11196t112J              d` <- `
:Sjt14254t122J             u` <- `
:Sj12195t112J              m` <- `
:Sj12752t114J              p` <- `
:Sj5248h111J               .` <- `
:Sj4142h118J               "` <- `
:Sj4128h125J                ` <- `
:Sj5181h112J               -` <- `
:Sj4128h125J                ` <- `
:Sj9116t111J               R` <- `
:Sj12528h111J              o` <- `
:Sj14126h121J              s` <- `
:Sj11154t115J              a` <- `
:Sj4128h125J                ` <- `
:Sj8566t111J               M` <- `
:Sj12528h111J              o` <- `
:Sj11976t111J              l` <- `
:Sj11646t111J              i` <- `
:Sj12416h111J              n` <- `
:Sj11711t116J              e` <- `
J                          Starting with `

Zapomniałeś pominięcia zz 66 na wykresie. To przerywa łańcuch, ponieważ następny wpis znajduje się na drugiej stronie.
archaephyrryx

9

60. Dalej (używa nie ^)

(Jest 54 nowych linii i 51 zakładek).

116 114 115
HEx
22  EMIT
41  EMIT
SPACE
62  EMIT
6F  EMIT
DECIMAL 121 EMIT
81  42  MOD EMIT
DUP EMIT
SPACE
98  EMIT
HEx 65  EMIT
DUP EMIT
2   PICK    EMIT
SPACE
66  EMIT
OVER    EMIT
69  EMIT
65  EMIT
6E  EMIT
64  EMIT
SPACE
69  EMIT
DUP EMIT
SPACE
68  EMIT
69  EMIT
DUP EMIT
SPACE
6D  EMIT
6F  EMIT
2   PICK    EMIT
68  EMIT
65  EMIT
OVER    EMIT
2E  EMIT
22  EMIT
SPACE
2D  EMIT
SPACE
4E  EMIT
6F  EMIT
OVER    EMIT
6D  EMIT
61  EMIT
6E  EMIT
SPACE
42  EMIT
61  EMIT
2   PICK    EMIT
65  EMIT
DUP EMIT
BYE

Wyjście jest cytatem 56:

"A boy's best friend is his mother." - Norman Bates

Wcześniej zabronione :"'&()*+-,./\037;<=>@X_[sovy pez]{}


9

59. Applesoft BASIC, używa nr ~

(Wykorzystuje 11 nowych linii)

1HOME:PRINT:PRINT:CALL2111:END
2REMWARNING!ABUSEOFLANGUAGEBELOW!!!!!!
4VTAB#PR#STOREONERREEEDELEIEIADELFPR#RETURNEDELGEGIENDDELHEHITANDELIDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5VTABLPR#EGHGREGRVTABLPR#EGHGREGRVTABAPR#EGHGREGRVTABHPR#EHHGREGRGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
6VTABEPR#EGHGREGRVTABIPR#EGHGREGRVTABNPR#EGHGREGRVTABNPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
8VTABAPR#EHHGREGRGRVTABMPR#EIHGREGRGRVTABBPR#EIHGREGRVTABNPR#EIHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
9VTABAPR#EGHGREGRVTABDPR#EGHGREGRVTABMPR#EIHGREGRVTABEPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
11VTABEPR#EGHGREGRVTABDPR#EGHGREGRVTABMPR#EIHGREGRVTABAPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12VTABLPR#EGHGREGRGRVTABLPR#EIHGREGRVTABAPR#EGHGREGRVTABDPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14VTABMPR#EIHGREGRVTABEPR#EGHGREGRVTABEPR#EGHGREGRVTABDPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15VTABMPR#EIHGREGRVTABAPR#EGHGREGRVTABLPR#EHHGREGRVTABBPR#EIHGRE`

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:

  • Wiersz 1: Wyczyść ekran, wydrukuj 2 znaki nowego wiersza, aby wiersz polecenia nie nadpisał cytatu, zadzwoń do osadzonego kodu maszynowego rozpoczynającego się od wiersza 4 i wyjdź.
  • Wiersz 2: programy Applesoft są zwykle przechowywane od adresu 0x0801 (2049), ale muszę dodać tutaj dopełnianie, aby osadzony kod maszynowy zaczynał się od 0x83F (2111), ponieważ „0” jest zabronionym znakiem.
  • Linie 4-15: Kod maszynowy może składać się tylko z bajtów, które można wydrukować w formacie ASCII. Tokenizer konwertuje zastrzeżone słowa na pojedyncze bajty, które są zakodowane przy pomocy zestawu MSB (np. „VTAB” = 0xA2), ale konwertuje małe litery na wielkie.

Demontaż:

; Body of line 4: set up zero-page constants and index
; Y = offset from start of text page to current character
; Quote drawn right-to-left; start at offset 35 (0x23)
083F-   A2 23       LDX   #$23
0841-   8A          TXA   
0842-   A8          TAY
; Z-page 0x45-0x46 points to start of text page (0x0400)
0843-   A5 45       LDA   $45
0845-   45 45       EOR   $45
0847-   85 45       STA   $45
0849-   49 45       EOR   #$45
084B-   49 41       EOR   #$41
084D-   85 46       STA   $46
; This TXA effectively a no-op to prevent incorrect tokenization
; ("FRETURN" would get tokenized as "FRE TURN", not the desired "F RETURN")
084F-   8A          TXA   
; All characters stored as uppercase ASCII. To display correctly, MSB
; must be set, so uppercase is XORed with 0x80. To transform to lowercase,
; XOR with 0xA0; To transform to symbol, XOR with 0xE0.
;
; Store constant 0xA0 at memory 0x47 (loading A from somewhere on text
; page which had just been cleared to all 0xA0)
0850-   B1 45       LDA   ($45),Y
0852-   85 47       STA   $47
; Store constant 0x80 at memory 0x48
0854-   45 47       EOR   $47
0856-   49 80       EOR   #$80
0858-   85 48       STA   $48
; Store constant 0xE0 at memory 0x49
085A-   45 48       EOR   $48
085C-   49 E0       EOR   #$E0
085E-   85 49       STA   $49
; Embedded code too big to fit on one line (~255 char input limit) so must
; jump to body of next line. But smallest offset that can be encoded is
; 0x21 (ASCII '!') so do that and pad out rest of line with more '!'
0860-   B8          CLV   
0861-   50 21       BVC   $0884

; Body of line 5: draw last 4 characters (right-to-left)
; A = 0x4C (ASCII 'L')
0884-   A2 4C       LDX   #$4C
0886-   8A          TXA
; XOR with constant 0xA0 stored at 0x47, which shows up as 'l'   
0887-   45 47       EOR   $47
; Write to text page (0x400 + 0x23)
0889-   91 45       STA   ($45),Y
; Move 1 char to the left
088B-   88          DEY   
; Next char'l', same process (could optimize here)
088C-   A2 4C       LDX   #$4C
088E-   8A          TXA   
088F-   45 47       EOR   $47
0891-   91 45       STA   ($45),Y
0893-   88          DEY   
; Next char 'a'
0894-   A2 41       LDX   #$41
0896-   8A          TXA   
0897-   45 47       EOR   $47
0899-   91 45       STA   ($45),Y
089B-   88          DEY  
; Next char 'H' 
089C-   A2 48       LDX   #$48
089E-   8A          TXA   
089F-   45 48       EOR   $48
08A1-   91 45       STA   ($45),Y
08A3-   88          DEY   
; Decrement index an extra time since next char is a space
08A4-   88          DEY   
; Jump to body of next line after padding
08A5-   B8          CLV   
08A6-   50 21       BVC   $08C9

; ... Lines 6-14 similar ...

; Body of line 15
; '-'
0A64-   A2 4D       LDX   #$4D
0A66-   8A          TXA   
0A67-   45 49       EOR   $49
0A69-   91 45       STA   ($45),Y
0A6B-   88          DEY   
; 'a'
0A6C-   A2 41       LDX   #$41
0A6E-   8A          TXA   
0A6F-   45 47       EOR   $47
0A71-   91 45       STA   ($45),Y
0A73-   88          DEY   
; 'L'
0A74-   A2 4C       LDX   #$4C
0A76-   8A          TXA   
0A77-   45 48       EOR   $48
0A79-   91 45       STA   ($45),Y
0A7B-   88          DEY   
; '"'
0A7C-   A2 42       LDX   #$42
0A7E-   8A          TXA   
0A7F-   45 49       EOR   $49
0A81-   91 45       STA   ($45),Y
; Return from CALL
0A83-   60          RTS   

Kod maszynowy można z pewnością zoptymalizować, ale niektóre dziwactwa wynikają z ograniczeń kodowania, na przykład:

  • Fraza jest rysowana od prawej do lewej, ponieważ zmniejszanie Y jest łatwiejsze do zakodowania przy zwiększaniu Y.
  • Wiele sekwencji „LDX imm; TXA”, ponieważ kod operacji dla „LDA imm” (0xA9) odwzorowuje zarezerwowane słowo „COLOR =”, które zawiera niedozwolony znak „=”.

8

41. REGULACJA (nie używa L)

(Nie może być żadnych nowych nowych linii)

````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`8``8``F``RK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`F`````8````F````F```RF``K````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`F``RF```8````F````RK```````````````````````````````````````````````````````K`RF``````F`````F````RF```F``RK```````````````A```````````````K`AF``RF`RF``8```K```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AF````F```8``RF``RK```````````````````````````````````````````````````````````K`RF`````F````F```RF``F`FK```````````````````A````````````````````````K`A8``F``F```RF````RK```````````````````````````````A`````````````````````````````````K`AtF``8```tK````````````````````````````````````K`AF````tF```8````RK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`````````````````````````````````````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n````````````````````````````````````````````````````K`AtF``F```F````RF`````RK```````````````````````````````A````````````````````````````K`AF``F`F``8```tK````````````````````````````````````````````````K`A8``````F``````F`````8````K`````````````````````````````````````````````````````````````````````````````````````````````````````````K`ARF`````tF``````RF`````RK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````K`RF```F``RF```RF````RK````````````````````````````````````````````````````````````````````````````````````````A``````````````````````````````````````````````````````````````````````````````K`AF`````tF``````F`````8````K`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`ARF`````8````RF````RK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`F``F```F````8`````F`````RK````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````n````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````C
````````````K`RF`F``8```RF```K``````````````````````````A`````````````````````````K`AF````tF`````tF``````RK`````````````````````````````K`F`````RF``````tF```````tK``````K````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AF````F```RF````tF```RK```````````````````````````````````````````````````K`8```F```RF````RF```K``````````````````````````````````K`tF```8``F``RK```````````````````````````K`F````8```RF```F``RK````````````````````````````A``````````````````````````````K`AF```8````tF````RK```````````````````````````````````````````````````K`F``F```F````F`````8``````RK`````````````````````````````````````````````````````````K`8``````F``````RF`````tK```````````A`
```````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````n`````````````````````````````````````````n``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n`````````````````````````````````````````````````````````````````````````````````````n``````````````````````````````````````
``````````A````````````````````K`A8```F```tF````F`````K`````````````````````````````````````````````````````K`A8````F````tF```RK``````n`````````````````````````````K`AK````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`ARF`````8````8````K```````````````````````````A````````````````````````K`AF`````F````8```RF```RK``````n`````````````````K`ARF``8```RF```RK``````n```````````````````````K`AF``F`F``F```8````F````K`````````````````````````````````````````````````````K`ARF````F```8``F``RK```````````````````````````A```````````````````````````````K`ARF`````tF````8`````K```````````````````````````````A```````````````````````````K`Ai````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
K`8F8`F`K````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AK`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AF```F````8`````8`````K````````````````````````````````````````````````````K`AK``````````````````````````````````````K`AK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AF``F`F``8```F```F````K`````````````````````````````````````````````````````````K`A8``````F``````F`````8````K`````````````````````````````````````````

Dane wyjściowe to cytat 50:

"Houston, we have a problem." - Jim Lovell

Wcześniej zabronione :"#$&'()*+,-./01357:;<=>@[\]^_ BdeEghJNopQksvWxXyz{|}~

Pozostałe postacie:

  • Symbolika: ! % ? `
  • Liczby: 2 46 89
  • Duże litery: A CD FGHI K M OP RSTUV YZ
  • Małe litery: 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 znak Zwykona 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:

  1. wykonaj wystarczającą liczbę „5” (odwróć ostatni bit) i „2” (obróć w prawo o 3 bity), aby akumulator zawierał prawidłowy kod ASCII do wydrukowania
  2. wykonuj „3” (naciśnij na lżejszy stos i wykonaj skomplikowany obrót), aż stos # 2 będzie zawierał akumulator
  3. wykonaj „13” (pop stos 2 i wydrukuj), aby wydrukować ten kod
  4. ponieważ „3” obróci wskaźnik kodu w skomplikowany sposób, jeśli nie pójdziemy do przodu w poziomie, z łatwością przekroczymy limit 64 nowych wierszy. Musimy więc robić więcej „3”, dopóki kierunek nie będzie prawidłowy.

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żyjemy n(11 × 5 × 2), aby kontrolować rozmiar stosu i Kdostosować kierunek.

Zasadniczo, jeśli krok 1 nie zawiera żadnego R, używamy KAnKdo wydrukowania znaku i przejścia o 4 linie w górę. W przeciwnym razie używamy KKAdo drukowania i przesuwania w dół o 2 linie. Od czasu do czasu można również KnnKsiłą 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.


8

23. Glif , nie używa%

2248242424422424244224242442242424422248244224242442244422482424244224242442242424422248244224242442242424422424244222482442244422482424244224242442242424422424244224242442244422482424244222482442242424422248244224242442242424422248244224242442224824422424244222482442244422482424244222482442242424422424244224242442242424422424244222482442244422482424244222482442242424422424244222482442242424422248244224242442224824422424244224442248242424422248244224242442224824422424244224242442224824422424244224242442244422482424244224242442242424422424244224242442244422482424244222482442242424422248244224242442242424422248244224242442242424422444224824242442224824422424244224242442224824422424244222482442242424422248244224242442224824422444224824242442242424422424244224242442242424422444224824242442224824422424244224242442242424422424244222482442242424422444224824242442224824422424244224242442242424422248244224242442242424422248244224442248242424422424244224242442242424422424244224442248242424422248244224242442242424422424244224242442242424422248244224442248242424422248244224242442242424422248244224242442224824422424244224242442244422482424244222482442242424422424244222482442242424422248244224242442224824422424244222482442244422482424244222482442242424422424244222482442242424422248244224242442224824422424244224442248242424422248244224242442242424422424244222482442242424422424244222482442244422482424244224242442224824422424244222482442242424422248244224242442244422482424244224242442242424422424244222482442242424422444224824242442242424422424244224242442242424422444224824242442242424422248244224242442224824422424244224242442224824422444224824242442242424422424244224242442242424422444224824242442242424422424244224242442224824422424244222482442242424422248244224442248242424422248244224242442224824422424244224242442242424422248244224242442244422482424244222482442242424422248244224242442242424422248244224242442242424422248244224442248242424422248244224242442224824422424244224242442242424422248244224242442224824422444224824242442224824422424244224242442224824422424244224242442242424422248244224442248242424422248244224242442242424422248244224242442224824422424244222482442242424422444224824242442224824422424244222482442242424422424244224242442224824422424244222482442244422482424244222482442242424422424244222482442242424422424244222482442242424422248244224442248242424422248244224242442242424422424244224242442242424422248244224442248242424422248244224242442224824422424244222482442242424422424244224242442224824422444224824242442224824422424244224242442242424422424244224242442224824422444

Wynik to cytat 30:

"I want to be alone." - Grusinskaya

Wcześniej zabronione :!"#$&'()*+,-./013567:;<=>@[\]^_` AbBCdeEFghIjJkLMNopqQRsTUvVWxXyYzZ{|}~

Pozostałe postacie:

  • Symbolika: ?
  • Liczby: 2 4 89
  • Duże litery: D GH K OP S
  • Małe litery: 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ę. :(


3
Cóż, istnieje ulubiona taktyka modułu: P
Sp3000,

1
Nie możesz użyć cytatu 6: istnieje zasada „Wybrany numer cytatu nie może znajdować się więcej niż 5 poniżej numeru odpowiedzi”
anatolyg

@anatolyg, tęskniłem za tą zasadą. Dzięki. Zaktualizowano
Peter Taylor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.