Zachodzące na siebie Polyglots


37

W przeciwieństwie do wielu wyzwań C&R, nie wymaga to osobnego stanowiska rabusiów; celem złodziei jest złamanie poprzedniej odpowiedzi, a następnie opublikowanie nowej jako policjant.

Jako osoby odpowiadające napiszesz serię poliglotów, które wyglądają tak (każda kolumna jest językiem, a każda pozycja jest wynikiem odpowiedzi w tym języku):

Language:  1  2  3  4  5  6  7  8  ...
Answer 1:  0  1  2
Answer 2:     1  2  3
Answer 3:        2  3  4
Answer 4:           3  4  5
Answer 5:              4  5  6
Answer 6:                 5  6  7
...

(puste miejsca oznaczają, że w tym przypadku nie jest wymagane zachowanie).

Każda odpowiedź powinna pracować w 3 językach i wydrukować 3 różne kolejne numery, które są więcej niż każdy z numerów drukowanych przez poprzednią odpowiedź (pierwsze odbitki odpowiedź 0, 1i 2). Każda odpowiedź używa dwóch języków z poprzedniego zgłoszenia i trzeciego nowego języka. Odpowiadający powinien spróbować zaciemnić ten trzeci język.

Aby opublikować nową odpowiedź, powinieneś:

  • Złam najnowszą odpowiedź, znajdując jej trzeci język.
  • Najlepiej dodaj wyjaśnienie swojego cracka i powiadom plakat o odpowiedzi. Gdy twoje zgłoszenie zostanie złamane, powinieneś również dodać wyjaśnienie.
  • Napisz poliglotę składającą się z drugiego i trzeciego języka tej odpowiedzi oraz innego wybranego przez siebie języka. Ujawnij swoje pierwsze dwa języki, ale nie ujawniaj swojego nowego. Kolejnym celem plakatu będzie znalezienie tego języka (lub innego języka, w którym on działa), więc powinieneś spróbować go zaciemnić.

Dane techniczne

  • Kryteria prawidłowego języka programowania są takie same, jak kryteria z The Programming Language Quiz, Mark II - Cops :

  • Każda odpowiedź musi zostać uruchomiona w niecałą minutę na rozsądnym komputerze.

  • Państwo może ponownie użyć języków programowania, ale nie musi być co najmniej dwie odpowiedzi pomiędzy (tak indywidualna odpowiedź nie może ponownie użyć języka).
  • Złamanie zgłoszenia polega na znalezieniu dowolnego języka programowania, który drukuje poprawny wynik, a nie tylko zamierzonego. Jeśli przesyłanie jest uruchamiane w dowolnym języku, który nie został zadeklarowany lub nie działa, nie ma żadnych wymagań.
  • Nie możesz publikować dwa razy (lub więcej) z rzędu.

Zwycięskie kryterium

Zwycięską odpowiedzią jest ta, która odpowiedź zajęła najwięcej czasu. Wyzwanie nigdy się nie skończy, dlatego zawsze można zmienić zwycięską odpowiedź.


2
Otworzył czat do dyskusji na temat możliwych pęknięć i budowania poliglotów.
Bubbler,

1
Czy odpowiedź może wygenerować inne rzeczy oprócz pożądanej liczby?
NieDzejkob

1
@NieDzejkob Nie, program powinien wypisać tylko liczbę, i tak, wolałbym, żeby programy działały krócej niż minutę.
Esolanging Fruit

3
Oto zapytanie SEDE, które oblicza czas, przez jaki odpowiedzi pozostawały bezpieczne (w godzinach).
NieDzejkob

1
@EmbodimentofIgnorance Tak, możesz wymagać flag wiersza polecenia, ponieważ zasadniczo definiują one oddzielnych interpreterów i tak, program musi wydrukować tylko liczbę. Program może wysyłać dane do STDERR, ale istotne jest tylko wyjście do STDOUT.
Esolanging Fruit

Odpowiedzi:


11

Hexagony, Klein (101) i ???

  xx={puts/}
gets87!@xx=p

main\

>9.*5,6v

To drukuje 7w Hexagony , 8w Klein (101) i 9w ???.

9Nie działa, jeśli znak nowej linii jest dodawany na końcu kodu. Zachowaj ostrożność, jeśli testujesz lokalnie.

Edycja: Bycie na żywo przez 20 godzin jest już rekordem, więc odtąd dam kilka wskazówek. (Również dlatego, że dany język to IMO, który nie jest jeszcze dobrze znany.)

Poradnik

  1. „The 9nie działa, jeżeli nowej linii dodaje się na końcu” jest bardzo istotne, jak również dwa pierwsze obszary (które są ignorowane zarówno Hexagony Klein).
  2. Język jest w TIO.
  3. Pierwsze dwie spacje powodują, że program przeskakuje do ostatniej linii. (To nie jest język 2D.)
  4. Nie ma jawnego polecenia wyjściowego, a vpolecenie kończy program.

Wyjaśnienie ( cracked post )

W kodzie źródłowym

abcd={} -- a gaffe avoiding tactic in C++/C#
abcd[!1]=   1+2+3+4+5+6+7+8+9+10+11+12+13+17!
print(abcd[0>1+2+3 and 4+8+6<0-0]//35)
if 0>1 then a.next=';' en\
                    >1+6.@.@

Odpowiednie instrukcje w Klein (101) to:

IP->.....................^...........IP->/
.........................|...................
.........................8
.........................\<-.............IP<-
                         @

Klein to zabawny język 2D, w którym przekroczenie granicy obszaru kodu (który jest kwadratem) zależy od topologii Kleina. /i \są zwierciadłami.

Adres IP zaczyna się w lewym górnym rogu, w prawo. Spotyka lustro w kierunku górnej granicy i ponownie wchodzi w obszar kodu po prawej stronie, jak pokazano powyżej. Następnie uderza ponownie w lustro, 8 zostaje popchnięte, a następnie (po kilkakrotnym przejściu przez granicę) zatrzymuje się na @. Następnie zawartość stosu jest drukowana na standardowym wyjściu, czyli pojedynczym 8.



9

Befunge-96, Hexagony i ???

abcd={} -- a gaffe avoiding tactic in C++/C#
abcd[!1]=   1+2+3+4+5+6+7+8+9+10+11+12+13+17!
print(abcd[0>1+2+3 and 4+8+6<0-0]//35)
if 0>1 then a.next=';' en\
                    >1+6.@.@

Drukuje się 6w Befunge-96 , 7w heksagonii i 8???.

Wyjaśnienie

Kod sześciokątny, gdy „prettified” to:

       a b c d = { } - 
      - a g a f f e a v 
     o i d i n g t a c t 
    i c i n C + + a b c d 
   [ f a l s e ] = 1 + 2 + 
  3 + 4 + 5 + 6 + 7 + 8 + 9 
 + 1 0 + 1 1 + 1 2 + 1 3 + 1 
7 ! p r i n t ( a b c d [ 0 > 
 1 + 2 + 3 a n d 4 + 5 + 6 < 
  0 - 0 ] / / 3 5 ) i f 0 > 
   1 t h e n a . n e x t = 
    ' ; ' e n d > 1 + 6 . 
     @ . . . . . . . . . 
      . . . . . . . . . 
       . . . . . . . . 

Ścieżka egzekucji rozpoczyna się w lewym górnym rogu, kierując się na wschód. Górny rząd niewiele robi. -zmienia bieżące zbocze pamięci, więc wartość w nim jest 0. Wykonanie jest kontynuowane, kierując się na wschód do środkowego rzędu, gdzie 7!ładuje 7się bieżącą krawędź pamięci i drukuje jako liczbę całkowitą. [zmienia wskaźnik instrukcji na North East, zaczynając od 7. Następnie 7+3wykonanie osiąga, [który zmienia wskaźnik instrukcji na północno-zachodni, zaczynając od południowo-wschodniego rogu. Wreszcie ścieżka jest miejscem, w ..@którym @kończy się program.



8

Lua, pieprzony mózg, ???

abcd = {} - grafty unikające taktyki w C ++
abcd [false] = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14
drukuj (abcd [0> 1 + 2 + 3 i 4 + 5 + 6 <0-0] // 35)
jeśli 0> 1, to a.next = ';' koniec

Drukuje 3 w Lua, 4 w pieprzony mózg i 5 w ???.

Wyjaśnienie dotyczące pękniętego postu :

a = 1 + 2 + 3 + 3 + 4 + 5 + 6 + 7 + 8 + 9
b = 1 + 1 + 1
f = 3 - (- 1)
c = 7 + 9 + 13 + 11 + 12 + 3--1
g = a + b + c + 1 + 2 + 3 + 4 + 5
j = 9 + 7 + g + c + b + a + g + g + g + g + g + g + 1 + 2 + 3 + 4 + 1 + 1
h = 1 + 1 + 1 + 1 + 333 + 1 + 1 + 1 + 111 + 1 + 1 + 1 + 333 + 1 + 1 + 1 + 1 + 1.
drukuj (f)
  • W Pythonie 3 3--(-1)jest 2, więc print(f)wypisuje 2 (inne rzeczy są niepotrzebne)
  • W Lua --ponownie jest komentarzem, 3--(-1)podobnie jak 3, więc print(f)drukuje 3 (inne rzeczy są znowu niepotrzebne)
  • W bezruchu jest 57 plusów i 5 minusów, ustawiających pierwszą komórkę na taśmie na 52, a .znak wyjściowy 52, który jest 4.


8

Wyzwalacz , JavaScript i ???

[ //aТ/\\ ][ //е"6
console.log(111-111+12)]
//!'!/-²6-²52

Drukuje 11w wyzwalacz , 12w JavaScript , a 13w REDACTED.

Ponieważ nie zostało to złamane dłużej niż jakakolwiek inna odpowiedź, oto kilka wskazówek:

  • W przypadku, gdy nie powiadomienia, Тa еna pierwszej linii są znaki wielobajtowe.
  • [ //i \\ ][ //nie ma operacji.
  • Drugi wiersz, podobnie jak -²52martwy kod.
  • Język nie ma pojęcia zakończenia, dlatego ²6tworzy nieskończoną pętlę.
  • Mówiąc ściślej, drugi bajt kodowania UTF-8 ², wraz z 6, tworzy nieskończoną pętlę.
  • Wyprowadzana liczba jest kodowana przez /!'!/
  • Języka nie ma w Try It Online, Rosetta Code ani Esolangs.
  • Jedyną dostępną formą wyjścia jest ekran o wielkości 1 pz.
  • Współczynnik proporcji ekranu wynosi 2.
  • Chociaż język nie był pierwotnie przeznaczony jako kod maszynowy, istnieją implementacje FPGA.
  • Według Wikipedii zamierzonym celem tego języka były gry wideo.
  • Jedynym sposobem na dostęp do ekranu jest specjalna instrukcja, która pobiera współrzędne w rejestrach do wyboru, a wysokość jako natychmiast, a XOR wyświetla bitmapę 8 na n na ekranie. Aby ułatwić wykrywanie kolizji, a także umożliwić wyczyszczenie ekranu, jeden z rejestrów zostanie ustawiony, gdy dowolny piksel zostanie ponownie wyłączony.

Wyjaśnienie

Cóż, zajęło mi to trochę czasu. Zobaczmy, jak wygląda kod:

0200 5b20    SE VB, V2   ; Skip the next instruction if VB = V2. Since all
0202 2f2f    CALL 0xF2F  ; registers start at 0, this call will be skipped. This
                         ; hides the bytecode from JavaScript.
0204 61d0    LD V1, 0xD0 ; A useless load. Necessary to use a UTF-8 continuation
0206 a22f    LD I, 0x22F ; byte as an instruction and load the address of
                         ; the sprite.
0208 5c5c    SE VC, V5   ; A red herring supposed to suggest symmetry is
                         ; important, as well as a totally intended eliminator
                         ; of inaccurate implementations. Most documentation
                         ; claims that the lowest nibble must be zero, but in
                         ; the original COSMAC VIP implementation it's
                         ; a don't-care.

Oznacza to, że chociaż wiele dostępnych emulatorów zachowuje się poprawnie, implementacja reguł jest podana w drugim zdaniu strony Wikipedii . Oczywiście nie można go uruchomić bezpośrednio na przeciętnym komputerze, ale znalazłem emulator Emma 02, do którego link na stronie COSMAC VIP działa najlepiej.

020A 205d    CALL 0x05D    ; Skipped.
020C 5b20    SE VB, V2     ; Same as with the very beginning. Red herring.
020E 2f2f    CALL 0xF2F
0210 d0b5    DRW V0, VB, 5 ; Draw the sprite pointed to by I. Since V0 and VB
                           ; haven't been written to yet, the sprite will be drawn
                           ; in the top-left corner of the screen. The height is
                           ; an immediate.
0212 2236    CALL 0x236    ; Jump over the JavaScript and Trigger code. It doesn't
                           ; matter that we never return.
0214-022E *never used*
022F 2f      DB %00101111  ; Sprite data.
0230 21      DB %00100001
0231 27      DB %00100111
0232 21      DB %00100001
0233 2f      DB %00101111
0234-0235 *never used*
0236 b236    JP V0, 0x236  ; Since V0 is still zero, this is an infinite loop.
0238-023C *never used*     ; Together with the previous two lines, it's the
                           ; -²6-²52. It's a red herring supposed to suggest
                           ; prefix, or Polish, notation.

Nie mów mi, że to kod maszynowy na niektórych procesorach.
SIGSTACKFAULT,

1
@Blacksilver Zakładam, że tak, odkąd dwie wskazówki temu - jak inaczej by to wyglądało, nie byłoby na Esolang, ale nadal byłoby wystarczająco znaczące dla Wikipedii?
Ørjan Johansen

@Blacksilver OK.
NieDzejkob

@ngm przepraszam, ale nie
NieDzejkob,

pęknięty , jak sądzę, zgodnie z zasadami.
ngm

7

Python 2, Python 3, ???

a={1,2}
print(1+#a
--bool(1/2)
)

Wyświetla 1 w Python 2, 2 w Python 3 i 3 w ???.

Wyjaśnienie pęknięcia (pęknięty post) :

#define print(A) main(){puts("0");}
print(1+bool(1/2))
  • 0: C: Pierwszy wiersz definiuje makro podobne do funkcji, printktóre ignoruje pojedynczy argument i ocenia na main(){puts("0");}pełny program, który drukuje 0i wychodzi. Całe wyrażenie 1+bool(1/2)jest ignorowane, gdy print( )makro w drugim wierszu jest rozwinięte do main(){puts("0");}.

  • 1: Python 2: Pierwszy wiersz to komentarz. 1/2używa dzielenia liczb całkowitych w Pythonie 2, dając 0. Ta wartość jest następnie interpretowana jako wartość logiczna ( bool(0)-> False), a następnie dodawana do 1( 1+False-> 1), a następnie drukowana.

  • 2: Python 3: Pierwszy wiersz to komentarz. 1/2używa podziału zmiennoprzecinkowego w Pythonie 3, dając 0,5. Ta wartość jest następnie interpretowana jako wartość logiczna ( bool(0.5)-> True), a następnie dodawana do 1( 1+True-> 2), a następnie drukowana.



7

JavaScript , CHIP-8 i ???

[ //aТ/\\ ][ //е"6
console.log(111-111+12)]
//!'!/-²6-²52@++++2345

12w JavaScript , 13CHIP-8 i 14???

Mam zamiar wyjść na kończynę i nazwać ją złamaną, chociaż nie jestem w stanie sprawić, by zadziałała, jestem pewien języka (który wydaje się być tym, o co proszą reguły).

Oto niedoskonałe wyjaśnienie pękniętego postu

Kod w systemie szesnastkowym „to” (mogę być nieco wyłączony):

[ 0x5b, 0x20, 0x2f, 0x2f, 0x61, 0xD0, 0xA2, 0x2f, 0x5c, 
0x5c, 0x20, 0x5d, 0x5b, 0x20, 0x2f, 0x2f, 0xD0, 0xB5, 
0x22, 0x36, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 
0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x31, 
0x31, 0x31, 0x2d, 0x31, 0x31, 0x31, 0x2b, 0x31, 
0x32, 0x29, 0x5d, 0x0a, 0x2f, 0x2f, 0x21, 0x27, 
0x21, 0x2f, 0x2d, 0xb2, 0x36, 0x2d, 0xb2, 0x35, 0x32 ]

Możesz przejść tutaj , kliknąć „Narzędzia binarne” i wkleić to do pola tablicy bajtów. Kliknij „Dekompiluj”.

Kluczowymi elementami kodu są: instrukcje mówienia, gdzie jest „liczba”, spritepolecenie, które wypisuje liczbę, poprawna ilość śmieci tutaj i tam oraz następujące:

: label-0
    0x2F
    0x21
    0x27
    0x21
    0x2F

Aby zobaczyć, co to reprezentuje, możesz kliknąć „Edytor duszka” i wkleić te wartości szesnastkowe w polu poniżej. Zobaczysz odpowiedź:

wprowadź opis zdjęcia tutaj

Jestem prawie pewien, że możesz umieścić na końcu wszystko, co chcesz, a wynik CHIP-8 się nie zmieni, stąd nowy wpis.

Byłbym zachwycony, gdyby ktoś mógł sprawić, by to w pełni działało, zamiast „dowodu” odpowiedzi, którą tutaj podałem.


Pozwolę na to . Wyjaśnię to dzisiaj w wyjaśnieniu. Dobra robota.
NieDzejkob


Ponadto, twój szesnastkowy musi być niepoprawny, ponieważ nie dekoduje jako poprawny UTF-8 ...
NieDzejkob

5

C, Python 2, ???

#define print(A) main(){puts("0");}
print(1+bool(1/2))

Drukuje się 0w C, 1w Pythonie 2 i 2???.

Będzie to bardzo łatwe do złamania dla osób znających Pythona, ale chciałem zacząć od innych odpowiedzi. Kolejne odpowiedzi powinny próbować zaciemnić trzeci język (nie zrobiłem tego).


Pęknięty . Wielkie wyzwanie btw!
pizzapants184

5

Python 3, Lua, ???

a=1+2+3+3+4+5+6+7+8+9
b=1+1+1
f=3--(-1)
c=7+9+13+11+12+3--1
g=a+b+c+1+2+3+4+5
j=9+7+g+c+b+a+g+g+g+g+g+g+1+2+3+4+1+1
h=1+1+1+1+333+1+1+1+111+1+1+1+333+1+1+1+1+1.
print(f)

Drukuje 2 w Pythonie 3, 3 w Lua i 4 w ???.

Wyjaśnienie dotyczące pękniętego postu :

a={1,2}
print(1+#a
--bool(1/2)
)
  • W Lua - jest komentarzem. W Pythonie 2 i 3, - wskazuje podwójną ujemną w arytmetyce.
  • W Pythonie 2 i 3 # jest komentarzem. W Lua # jest operatorem długości.
  • W Pythonie 2 1/2 jest podziałem podłogi, więc przyjmuje wartość zero. W Pythonie 3 tak nie jest. Ponieważ obie wersje Pythona oceniają 0 na False, bool (1/2) zmienia się na False w Pythonie 2 i True w Pythonie 3. Gdy jest używany w arytmetyce, False jest ustawiany na 0, a True na 1.


5

> <>, Befunge-96 i ???

abcd={} -- a gaffe avoiding tactic in C++
abcd[false]=1+2+3+4+5+6+7+8+9+10+11+12+13+17!
print(abcd[0>1+2+3 and 4+5+6<0-0]//35)
if 0>1 then a.next=';' end
                    >1+6.@

To drukuje 5><> cali , 6Befunge-967 cali i na ???.

Wiem, że zamierzonym rozwiązaniem było Befunge-93, ale nie mogłem się oprzeć.

Wyjaśnienie:

Befunge-96 podąża tą samą ścieżką co ><>, ale ignoruje nieznane instrukcje, w końcu dodając jedną do 5 i mnożąc ją przez 9, aby uzyskać 54, kod ascii 6.



5

Komentator , Beatnik , ???

// k... nak... naKaka pagpAbaGaBag
static answer: Option<&String> = None;
 
fn llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch(s: &String){
  answer = Some(s);
}
 
fn pneumonoultramicroscopicsilicovolcanoconiosis(){
  println!("{}", answer.unwrap());
}
 
fn main(){
  let s = String::from("17");
  let t = "Hi! I am a cat. AOOOWRRRWWW! Me need Whiskas! Noow! Mee hungry hast bekommen. Feedme! sudo !!. Sad... six cable hostage wire cable diediediediee #               */";
  llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch(&s);
  pneumonoultramicroscopicsilicovolcanoconiosis();
}

Wykazuje 15 w Komentatorze , 16 w Beatnik i 17 w miejmy nadzieję jednym języku, który powinieneś znaleźć.

Dobra, czas na wskazówki:

  • Nazwa języka odnosi się do związku dwóch elementów, z których oba składają się na twoje ciało, ale z bardzo zróżnicowanymi wartościami procentowymi (w zależności od tego, czy jesteś robotem).
  • Sam język jest w TIO, ale implementacja nie.
  • Daj spokój.

1
Wygląda jak Rust ( fn main()między innymi), ale tak naprawdę nie działa w Rust ( explicit lifetime required in the type of 's'), ani w TIO, ani w innym znalezionym przeze mnie tłumaczu. I nie mogę znaleźć żadnego innego języka, który byłby używany fnjako identyfikator funkcji.
Draco18s,

Huh, nawet podpowiedź wygląda jak Rdza, która jest połączeniem Fe i O. Nie mogę wymyślić nic innego. Może różne wersje kompilatora?
Bubbler,

1
Podejrzewam, że może to być Rust skompilowany z mrustc , który jest w zasadzie Rust bez sprawdzania pożyczki.
Esolanging Fruit

@EsolangingFruit spróbuj
NieDzejkob

Trzy miesiące później, w końcu wokół do pękania to
Esolanging Fruit

4

Brainfuck,> <> i ???

abcd={} -- a gaffe avoiding tactic in C++
abcd[false]=1+2+3+4+5+6+7+8+9+10+11+12+13+14
print(abcd[0>1+2+3 and 4+5+6<0-0]//35)
if 0>1 then a.next=';' end
                    >1+9*,@

Drukuje 4w Brainfuck, 5w> <> i 6w ???

  • W pieprzeniu mózgu nic się nie zmienia.
  • W> <> vprzekierowuje przepływ programu w dół. nJest n wyjście umeric. ;kończy wykonanie.



4

Beatnik , Rust , ???

fn avreg(){}
fn/*azxzzz avreg k zqyzzz ax quke    
>>P0 ++puts++puts[pov]
\@�{>*}++puts++puts++puts++puts++puts++puts++puts++puts%
*/main(){print!("17")}

Drukuje 16 w Beatnik, 17 w Rust i 18 w ???.

Znaków na linii 4 należy zastąpić znak ASCII 18 (to nie zostało zrobione w linkach Tio ponieważ nie jest istotne, aby jedno z nich).

Objaśnienie ( pęknięty ):

Językiem poprzedniej odpowiedzi był Rust: konkretnie Rust skompilowany z mrustc . mrustc jest eksperymentalnym kompilatorem, a ponieważ jest przeznaczony głównie do ładowania prawidłowej wersji rustc, ignoruje sprawdzanie pożyczenia i sprawdzanie zmienności, umożliwiając kompilację fragmentu @ NieDzejkob bez błędów.

Ten program będzie działał z normalnym kompilatorem Rust, więc nie musisz instalować mrustc, aby go przetestować.

Poradnik

Ponieważ ta odpowiedź minęła najdłużej i nie została złamana, zostawię wskazówkę i będę to robić regularnie, dopóki nie zostanie złamana:

  • Tajny język jest dwuwymiarowy.
  • Jak wspomniałem w komentarzach, języka nie ma w TIO.
  • Ta postać jest czerwonym śledziem i ma bardzo małe znaczenie. Większość bajtów można zastąpić na swoim miejscu, a program nadal będzie działał.

1
Podczas losowego rzucania w to językami (nie znalazłem zbyt wielu poszukiwań dla „ascii codepoint 0x12 esolang”), zauważyłem, że faktycznie wyprowadza 15 w> <>, więc to fajnie
Niepowiązany ciąg

1
Wygląda na to, że nie drukuje to 18 w żadnym języku na TIO (bez dodanego co najmniej nagłówka, stopki lub flag wiersza poleceń). Mam nadzieję, że niczego nie przeoczyłem, ponieważ wydaje się, że sprawdzenie wszystkiego na esolangach, Wikipedii i kodzie Rosetta będzie prawdopodobnie trudniejsze ... Myślę, że jest to jakiś język 2D, w którym albo @, P, {, lub muruchamia znak literalny i coś potem drukuje swoje kodowy w systemie dziesiętnym, ale to nie wyjaśnia wszystkich ++s ...
Unrelated String

1
@UnrelatedString Tak, potwierdzę, że nie jest to język w TIO.
Esolanging Fruit

1
Cóż, mógłbym zmarnować jeden dzień, przeglądając 100 języków na esolang.org, próbując znaleźć taki, który pasuje ... Potem przeczytałem znak ASCII 18 i zdałem sobie sprawę, że moje podejście było całkowicie błędne, gdy szukałem zupełnie innej klasy języków ...
IQuick 143

2
@ IQuick143 śledzie są czerwone
Esolanging Fruit


3

Somme , Trigger and ???

[,,E,D,,$,H,_,K,,$,,_,F,L]=!
[]+[]+!![]+[][111]
_=[111][F+L+E+E];[,J,,A,I,,B,C,S]=
[]+_;$=A+B+C+D+I+H+J+A+I+B+H
R=_[$](H+K+I+J+H+C+S+H+B+B+I)();G=($[$]+[])[14]
R[A+B+C+D+B+E+K][E+B+G](12);`
iP<`

To drukuje 10w Somme , 11w Trigger i 12w ???.

Ponieważ ostatnie dwa języki są łatwe do poliglota, postanowiłem wymieszać , że język w.

Wyjaśnienie ( cracked post )

Trigger widzi cały kod jako ciąg tokenów (tokenizacja jest zachłanna):

  • Pojedynczy bajt (oznacz A)
  • Dwa takie same bajty, po których następuje inny bajt (oznacz AAB)
  • Trzy te same bajty (oznaczone AAA)
  • Cztery te same bajty (oznaczone AAAA)

W kodzie źródłowym

!!8@e6v+4>9 \
1((111+111)/111)
00
~tz

znaczącymi żetonami są ((1 11+ 111 111, gdzie pierwsze dwa nic nie robią, a ostatnie dwa drukują po 1 - a więc 11.



3

CHIP-8 , Klein (100) , ???

[ //aТ/\\ ][ //е"6
console.log(111-111+12)]
//!'!/-²6-²52@++++2345
 %/    <#> 13
       say 14
 + not not 15

Wyjścia 13 w CHIP-8 (zakładam), 14 w Klein i 15 w ???.

Kolejna topologia Kleina, tsk tsk. Zachowałem kod przed @, ponieważ nie wiem, co wpłynie na CHIP-8.

Wskazówki

Przepraszam, jestem trochę za opóźniony. Spróbuję dodać jeden dziennie.

  • Usuwanie pierwszej połowy (pierwszych trzech wierszy) programu nadal działa.
  • To nie jest język 2D
  • Język jest w TIO
  • notS i saymogą być usunięte bez wpływu na program

Dla porównania, program bez tych rzeczy wygląda następująco:

 %/    <#> 13
        14
 +   15

Wypróbuj online!


2
...Boję się. Działa to w Runicznej i generuje 16 .
Draco18s,

@ Draco18s Intencjonalne
Jo King

Nie stanie się to po mojej kolejnej aktualizacji, ponieważ dodałem lepszą obsługę ciągów znaków do kilku operatorów (obecnie TIO wyskakuje 1a ciąg znaków, który składa się z pierwszego wiersza i idzie „to nie jest wartość” i odrzuca je, aktualizacja będzie konkatować, chociaż mam do tego operatora, ale konkat działa na znakach i liczbach, a także na ciągach znaków, gdzie +traktuje je jak liczby ). Ale to było strasznie straszne: „Zastanawiam się, co… o Boże, można to pozostawić bez zmian i być następnym wpisem… gdybym tylko znał język ???…”
Draco18s

Czy definiujesz pół bajtów, znaków, linii lub czegoś konkretnego?
NieDzejkob,


3

Klein (100), komentator , ???

/@++++2345
start:
program:
 db 'function',10
 add program,program
 jp null+$8
 sbc rbp,rbp
 jnz program
 jr program
 add start
 halt
ex:

Wyjścia 14 w Klein (100) , 15 w Komentator , 16 w ???.

Jestem naprawdę zły w zaciemnianiu poliglotów.

Wyjaśnienie ( pęknięty post )

 %/    <#> 13
        14
 +   15

W Komentatorze popularne tokeny komentarzy i spacje są ważnymi poleceniami, a wszelkie inne znaki są ignorowane.

  • Spacja zwiększa bieżącą komórkę pamięci.
  • <# robi XOR 1 na bieżącej komórce pamięci.
  • % służy do resetowania bieżącej komórki pamięci do zera.

Czekaj, jest 16 miejsc po %, co się stało?

To właściwie mały błąd (lub funkcja?) W tłumaczu. /jest traktowany jako początek polecenia 2-znakowego, więc miejsce po nim jest zużywane. Ale /<space>jest niezdefiniowanym poleceniem (a więc nie ma opcji), więc przestrzeń jest skutecznie pomijana.


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.