Перекрывающиеся полиглоты


37

В отличие от многих проблем C & R, это не требует отдельной должности грабителей; цель грабителей состоит в том, чтобы взломать предыдущий ответ и затем опубликовать новый как полицейский.

Как ответчики, вы напишите серию полиглотов, которые выглядят следующим образом (каждый столбец является языком, а каждая запись является выходом ответа на этом языке):

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

(пробелы означают, что в этом случае поведение не требуется).

Каждый ответ должен работать на 3 -х языках и печать 3 различных последовательных номеров, каждый из которых один больше , чем цифры , напечатанных предыдущим ответом (первый ответ печатает 0, 1и 2). Каждый ответ использует два языка из предыдущего представления и третий новый язык. Ответчик должен попытаться запутать, что это за третий язык.

Чтобы опубликовать новый ответ, вы должны:

  • Взломайте самый последний ответ, найдя его третий язык.
  • Желательно добавить объяснение крэка и сообщить автору ответа. После того, как ваша заявка была взломана, вы также должны добавить объяснение.
  • Напишите полиглот, состоящий из второго и третьего языков этого ответа, а также другого языка по вашему выбору. Покажите свои первые два языка, но не раскрывайте свой новый. Следующей целью постера будет найти этот язык (или любой другой язык, на котором он работает), поэтому вы должны попытаться запутать его.

Характеристики

  • Критерии допустимого языка программирования такие же, как и в Викторине по языку программирования Mark II - Cops :

  • Каждый ответ должен выполняться менее чем за минуту на приемлемом ПК.

  • Вы можете повторно использовать языки программирования, но между ними должно быть как минимум два ответа (поэтому отдельный ответ не может повторно использовать язык).
  • Взлом представления состоит из поиска любого языка программирования, который печатает правильный результат, а не только предполагаемый. Если отправка выполняется на каком-либо языке, который не был объявлен или признан работоспособным, не требуется никаких действий.
  • Вы не можете публиковать дважды (или более) подряд.

Критерий победы

Победным ответом является тот ответ, который понадобился большинству времени для взлома. Задача никогда не закончится, поэтому всегда возможно, что победивший ответ изменится.


2
Открыл чат для обсуждения возможных трещин и построения полиглотов.
Bubbler

1
Может ли ответ вывести другие вещи, кроме желаемого числа?
NieDzejkob

1
@NieDzejkob Нет, программа должна выводить только число, и да, я бы предпочел, чтобы программы запускались менее чем за минуту.
Esolanging Fruit

3
Вот запрос SEDE, который вычисляет количество времени, в течение которого ответы оставались безопасными (в часах).
NieDzejkob

1
@EmbodimentofIgnorance Да, вам могут потребоваться флаги командной строки, поскольку они по существу определяют отдельные интерпретаторы, и да, программа должна печатать только число. Программа может выводить на STDERR, но релевантен только вывод на STDOUT.
Esolanging Fruit

Ответы:


11

Гексагония, Кляйн (101) и ???

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

main\

>9.*5,6v

Это печатается 7в гексагонии , 8в Кляйне (101) и 9в ???.

9Не работает , если новая строка добавляется в конце кода. Будьте осторожны, если вы проводите локальное тестирование.

Редактировать: 20-ти часовой концерт - это уже рекорд, так что теперь я дам несколько советов. (Также, потому что рассматриваемый язык - IMO, еще не известный.)

Советы

  1. « 9Не работает , если новая строка добавляется в конец» является очень важным, как и первые два пространства (которые игнорируются как Hexagony и Klein).
  2. Язык на ТИО.
  3. Первые два пробела заставляют программу перейти на последнюю строку. (Это не двумерный язык.)
  4. Там нет явной команды вывода, и vкоманда завершает программу.

Пояснение ( взломанный пост )

В исходном коде

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.@.@

Соответствующие инструкции в Кляйне (101):

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

Klein - это подобный веселью 2D-язык, где пересечение границы области кода (которая является квадратом) зависит от топологии Klein. /и \являются зеркалами.

IP начинается в верхнем левом углу, направленном вправо. Он встречает зеркало по направлению к верхней границе и снова входит в область кода с правой стороны, как показано выше. Затем он снова попадает в зеркало, 8 толкается, а затем (после прохождения границы несколько раз) останавливается на @. Затем содержимое стека печатается на стандартный вывод, который является единственным 8.



9

Befunge-96, шестиугольник и ???

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.@.@

Это печатает 6в Befunge-96 ,7 в шестиугольнике и 8в неверном .

объяснение

Код шестиугольника, когда «предварительно подтверждено»:

       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 . 
     @ . . . . . . . . . 
      . . . . . . . . . 
       . . . . . . . . 

Путь казни начинается в левом верхнем углу в восточном направлении. Верхний ряд мало что делает. -изменяет текущий край памяти так, чтобы значение в нем было 0. Выполнение продолжается в восточном направлении в среднем ряду, где 7!загружается 7текущий край памяти и печатается как целое число. [изменяет указатель инструкции на северо-восток, начиная с 7. После того, как 7+3выполнение затем достигает [который изменяет указатель команд на Северо - Запад , начиная в углу Юго - Восточной. Наконец путь, ..@где @заканчивается программа.



8

Луа, блядь, ???

abcd = {} - тактика избегания ошибок в C ++
ABCD [ложь] = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14
print (abcd [0> 1 + 2 + 3 и 4 + 5 + 6 <0-0] // 35)
если 0> 1, то a.next = ';' конец

Отпечатки 3 в Lua, 4 в Brainfuck и 5 в ???.

Пояснение к взломанному посту :

а = 1 + 2 + 3 + 3 + 4 + 5 + 6 + 7 + 8 + 9
б = 1 + 1 + 1
е = 3 - (- 1)
с = 9 + 7 + 13 + 11 + 12 + 3--1
г = а + B + C + 1 + 2 + 3 + 4 + 5
J = 9 + 7 + г + с + Ь + а + г + д + д + д + д + д + 1 + 2 + 3 + 4 + 1 + 1
ч = 1 + 1 + 1 + 1 + 333 + 1 + 1 + 1 + 111 + 1 + 1 + 1 + 333 + 1 + 1 + 1 + 1 + 1.
печать (е)
  • В Python 3 3--(-1)это 2, поэтому print(f)печатает 2 (другие вещи не нужны)
  • В Lua --снова комментарий, так 3--(-1)же просто 3, поэтому print(f)печатает 3 (другие вещи опять не нужны)
  • В игре brainfuck есть 57 плюсов и 5 минусов, устанавливающих первую ячейку на ленте в 52, и .выводит символ 52, который равен 4.


8

Триггер , JavaScript и ???

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

Печать 11в триггере , 12в JavaScript и 13в REDACTED.

Так как это не было взломано дольше, чем любой другой ответ, вот несколько подсказок:

  • Если вы не заметили, то Ти ев первой строке - многобайтовые символы.
  • [ //и \\ ][ //нет опс.
  • Вторая строка, как и -²52мертвый код.
  • Язык не имеет понятия окончания, поэтому ²6образует бесконечный цикл.
  • Чтобы быть точным, второй байт кодирования UTF-8 ², вместе с 6, образует бесконечный цикл.
  • Выводимое число кодируется /!'!/
  • Язык не на пробную версию онлайн, Rosetta Code или Esolangs.
  • Единственная доступная форма вывода - экран 1bpp.
  • Соотношение сторон экрана составляет 2.
  • Хотя язык изначально не был задуман как машинный код, реализации ПЛИС существуют.
  • Согласно Википедии, целью языка были видеоигры.
  • Единственный способ получить доступ к экрану - это специальная инструкция, которая принимает координаты в выбираемых регистрах и высоту в качестве непосредственного значения, а XOR отображает на экране растровое изображение размером 8 на n. Чтобы упростить обнаружение столкновений, а также сделать возможным очистку экрана, один из регистров будет установлен, когда какой-либо пиксель будет отключен.

объяснение

Ну, это заняло некоторое время, чтобы взломать. Давайте посмотрим, как выглядит код:

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.

Это означает, что, хотя многие доступные эмуляторы ведут себя правильно, реализация по правилам связана со вторым предложением на странице Википедии . Конечно, он не может быть запущен напрямую на обычном ПК, но я нашел эмулятор Emma 02, связанный с VIP-страницей COSMAC, для лучшей работы.

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.

Не говорите мне, что это машинный код на каком-то процессоре.
SIGSTACKFAULT

1
@ Blacksilver Я так предполагал с двух намеков назад - что еще будет выглядеть, не быть на Esolang, но все же быть достаточно заметным для Википедии?
Эрджан Йохансен,

@ Blacksilver ОК.
NieDzejkob

@ngm извините, но нет
NieDzejkob

треснул , я считаю, по правилам.
18:00

7

Python 2, Python 3, ???

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

Это печатает 1 в Python 2, 2 в Python 3 и 3 в ???.

Crack объяснение (Cracked post) :

#define print(A) main(){puts("0");}
print(1+bool(1/2))
  • 0: C: Первая строка определяет функционально-подобный макрос, printкоторый игнорирует свой единственный аргумент и оценивает его main(){puts("0");}, как полную программу, которая печатает 0и завершает работу. Целое выражение 1+bool(1/2)игнорируется, когда print( )макрос во второй строке раскрывается в main(){puts("0");}.

  • 1: Python 2: первая строка - комментарий. 1/2использует целочисленное деление в Python 2, давая 0. Это значение затем интерпретируется как логическое ( bool(0)-> False), затем добавляется к 1( 1+False-> 1) и затем печатается.

  • 2: Python 3: первая строка - комментарий. 1/2использует деление с плавающей точкой в ​​Python 3, давая 0,5. Это значение затем интерпретируется как логическое ( bool(0.5)-> True), затем добавляется к 1( 1+True-> 2) и затем печатается.



7

JavaScript , CHIP-8 и ???

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

12в JavaScript , 13в CHIP-8 и 14в ???

Я собираюсь выйти на конечность и назвать ее сломанной, хотя я не могу заставить ее работать, я уверен в языке (который, кажется, то, что требуют правила).

Вот несовершенное объяснение взломанного поста

Код в шестнадцатеричном "is" (я мог бы быть немного не так):

[ 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 ]

Вы можете перейти сюда , нажать «Бинарные инструменты» и вставить его в поле байтового массива. Нажмите «Декомпилировать».

Ключевые элементы кода: инструкции, указывающие, где находится «число», spriteкоманда, которая печатает число, правильное количество мусора здесь и там, и следующее:

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

Чтобы увидеть, что это означает, вы можете нажать «Редактор спрайтов» и вставить эти шестнадцатеричные числа в поле под ним. Вы увидите ответ:

введите описание изображения здесь

Я почти уверен, что вы можете положить все, что вам нравится, в конце, и результат CHIP-8 не изменится, отсюда и новая запись.

Я был бы рад, если бы кто-то смог сделать это полностью работоспособным, а не «доказательством» ответа, который я дал здесь.


Я позволю это . Я отредактирую объяснение позже сегодня. Отличная работа.
NieDzejkob


Кроме того, ваш шестнадцатеричный код должен быть неправильным, поскольку он не декодируется как действительный UTF-8 ...
NieDzejkob

5

C, Python 2, ???

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

Это печатает 0в C, 1в Python 2 и 2в ???.

Это будет очень легко взломать для людей, которые знают Python, но я хотел начать с других ответов. Последующие ответы должны попытаться запутать третий язык (я этого не делал).


Трещины . Великий вызов, кстати!
pizzapants184

5

Питон 3, Луа, ???

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)

Печатает 2 в Python 3, 3 в Lua и 4 в ???.

Пояснение к взломанному посту :

a={1,2}
print(1+#a
--bool(1/2)
)
  • В Lua, - это комментарий. В Python 2 и 3, - указывает на двойной отрицательный в арифметике.
  • В Python 2 и 3 # является комментарием. В Lua # - это оператор длины.
  • В Python 2 1/2 - это деление по полу, поэтому оно равно нулю. В Python 3 это не так. Поскольку обе версии Python оценивают 0 в False, bool (1/2) оценивается как False в Python 2 и True в Python 3. При использовании в арифметике False приводится к 0, а True - к 1.


5

> <>, Befunge-96 и ???

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.@

Это печатает 5 в><> , 6 вBefunge-96 и 7в ???.

Я знаю, что предполагаемое решение было Befunge-93, но я не мог удержаться.

Объяснение:

Befunge-96 идет по тому же пути, что и ><>, но игнорирует неизвестные инструкции, заканчивая тем, что прибавляет единицу к 5 и умножает ее на 9, чтобы получить 54, код ascii для 6.



5

Комментатор , Битник , ???

// 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();
}

Выходы 15 в Комментаторе , 16 в Битнике и 17 на одном, надеюсь, языке, который вы должны найти.

Хорошо, время подсказки:

  • Название языка относится к соединению двух элементов, каждый из которых составляет ваше тело, но с сильно различающимися процентами (в зависимости от того, являетесь ли вы роботом).
  • Сам язык на TIO, но реализация - нет.
  • Ох, давай.

1
Выглядит как Rust ( fn main()среди прочего), но на самом деле он не работает в Rust ( explicit lifetime required in the type of 's'), ни в TIO, ни в другом интерпретаторе, который я нашел. И я не могу найти другой язык, который использует fnв качестве идентификатора функции.
Draco18s

Да, даже намек выглядит как Rust, который представляет собой соединение Fe и O. Я не могу думать ни о чем другом. Может быть разные версии компилятора?
Bubbler

1
Я подозреваю, что это может быть Rust, скомпилированный с mrustc , который в основном является Rust без проверки заимствования.
Esolanging Fruit

@EsolangingFruit попробуй это
NieDzejkob

Три месяца спустя я наконец-то
нашел время

4

Brainfuck,> <> и ???

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*,@

Отпечатки 4в Brainfuck, 5в> <> и 6в ???

  • В brainfuck ничего не меняется.
  • В> <> vперенаправляет поток программы вниз. nЯвляется п umeric выхода. ;заканчивается исполнение.



4

Битник , Руст , ???

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

Это печатает 16 в Beatnik, 17 в Rust и 18 в ???.

в строке 4 должен быть заменен символом ASCII 18 (это не было сделано в ссылках TIO, поскольку он не имеет отношения ни к одному из них).

Пояснение ( треснуло ):

Язык предыдущего ответа был Rust: в частности, Rust скомпилирован с mrustc . mrustc - экспериментальный компилятор, так как он в основном предназначен для начальной загрузки действительной версииrustc , он игнорирует проверку заимствований и проверку на изменяемость, позволяя фрагменту кода @ NieDzejkob компилироваться без ошибок.

Эта программа будет работать с обычным компилятором Rust, поэтому вам не нужно устанавливать mrustc для его тестирования.

Советы

Поскольку этот ответ стал самым длинным без взлома, я оставлю подсказку и продолжу делать это регулярно, пока он не взломан:

  • Секретный язык двумерный.
  • Как я уже упоминал в комментариях, язык не на TIO.
  • Характер отвлекающий маневр и имеет очень мало значения. Большая часть байтов может быть заменена на место, и программа все равно будет работать.

1
При случайном подбрасывании языков (не найдя особого поиска в «ascii codepoint 0x12 esolang»), я заметил, что на самом деле он выдает 15 в> <>, так что это здорово
Unrelated String

1
Похоже, что это не печатает 18 на любом языке на TIO (по крайней мере без добавления заголовка, нижнего колонтитула или флагов командной строки). Надеюсь, я ничего не пропустил, потому что, кажется, будет гораздо сложнее проверить все на esolangs, Wikipedia и Rosetta Code ... Мое лучшее предположение, что это своего рода 2D-язык, где или@ , P, {или mначинает буквенный символ и что - то потом печатает его в десятичной элемент кода, но это не объясняет все ++с ...
неродственных Строка

1
@UnrelatedString Да, я подтверждаю, что это не язык в TIO.
Esolanging Fruit

1
Что ж, я мог бы потратить впустую день, просматривая 100 языков на esolang.org, пытаясь найти тот, который подходит ... Затем я прочитал ASCII 18-символьную вещь и понял, что мой подход был совершенно неверным, поскольку я искал совершенно другой класс языков ...
IQuick 143

2
@ IQuick143 сельдь красная
Esolanging Fruit

3

Z80Гольф , Сомма , ???

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

Это печатает 9 в Z80Golf , 10 в Сомме и 11 в ??? ,

Благодарим Bubbler за то, что он взломал предыдущий пост как Somme, который в качестве инструкции принимает сумму в столбце. Первые три столбца оценивают как

A.;

Который нажимает 10, печатает его и выходит.


3

Сомма , Триггер и ???

[,,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<`

Это печатает 10в Сомме , 11в Триггере , и 12в ???.

Поскольку последние два языка легко полиглотировать, я решил смешать этот язык .

Пояснение ( взломанный пост )

Триггер видит весь код как серию токенов (токенизация жадная):

  • Одиночный байт (обозначает A)
  • Два одинаковых байта, за которыми следует другой байт (обозначает AAB)
  • Три одинаковых байта (обозначены AAA)
  • Четыре одинаковых байта (обозначены AAAA )

В исходном коде

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

значительными токенами являются те ((1 11+ 111 111, где первые два ничего не делают, а последние два отпечатка по 1 каждый - таким образом, 11.



3

ЧИП-8 , Кляйн (100) , ???

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

Выходы 13 в ЧИП-8 (я полагаю), 14 в Кляйне и 15 в ???.

Другая топология Клейна, тск тск. Я сохранил код до @, так как я не знаю, что повлияет на CHIP-8.

Улики

Я немного запоздалый, извини. Я постараюсь добавить один в день.

  • Удаление первой половины (первых трех строк) из программы все еще работает.
  • Это не 2D язык
  • Язык на ТИО
  • notS и sayмогут быть удалены без влияния на программу

Для справки, программа без этого выглядит так:

 %/    <#> 13
        14
 +   15

Попробуйте онлайн!


2
...Я напуган. Это работает в Руническом и выводит 16 .
Draco18s

@ Draco18s Преднамеренный
Джо Кинг,

Это не произойдет после моего следующего обновления, так как я добавил лучшую обработку строк для нескольких операторов (в настоящее время TIO выдает a 1и строку, которая составлена ​​из первой строки и выходит «это не значение» и отбрасывает их, update будет concat, хотя у меня есть оператор для этого, но concat работает с символами и числами, а также со строками, где as +обрабатывает их как числа ). Но было очень жутко звучать так: «Интересно, что ... о боже, это можно было бы оставить без изменений и стать следующей записью ... если бы я только знал язык ...»
Draco18s

Вы определяете половину байтами, символами, строками или чем-то конкретным?
НиДжейкоб


3

Кляйн (100), комментатор , ???

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

Выходы 14 в Кляйне (100) , 15 в Комментаторе , 16 в ???.

Я серьезно плох в запутывании полиглотов.

Пояснение ( треснувший пост )

 %/    <#> 13
        14
 +   15

В Commentator важными командами являются общие токены комментариев и пробелы, а любые другие символы игнорируются.

  • Пробел увеличивает текущую ячейку памяти.
  • <# делает XOR 1 на текущей ячейке памяти.
  • % используется для сброса текущей ячейки памяти на ноль.

Подождите, есть 16 пробелов после % , что случилось?

На самом деле это небольшая ошибка (или особенность?) В интерпретаторе. /рассматривается как начало команды с двумя символами, поэтому пространство после нее используется. Но /<space>это неопределенная команда (таким образом, no-op), поэтому пространство эффективно пропускается.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.