Hello World на нескольких языках

72

задача

Создайте программу или функцию, которая действует на нескольких языках программирования, и при компиляции / интерпретации как другой язык выдает «Hello, World!» на другом естественном языке.

Например, допустимое решение может выводить Hello World!(английский) при компиляции и запускать как C, Hallo Welt!(немецкий) при компиляции и запускать как C ++ и 你好世界!(китайский) при запуске как Python.

правила

Чтобы избежать двусмысленности относительно правильности ответа, ниже приведен список разрешенных версий фразы на нескольких языках. Список состоит из фразы на языках, для которых Google Translate имеет проверенный сообществом перевод фразы (на момент написания статьи). *

Точность этих переводов спорна, но именно они будут использовать этот вызов. Напечатанные строки должны точно соответствовать указанному ниже формату (за исключением начальных или конечных пробелов).

Afrikaans:    Hello Wêreld!
Albanian:     Përshendetje Botë!
Amharic:      ሰላም ልዑል!
Arabic:       مرحبا بالعالم!
Armenian:     Բարեւ աշխարհ!
Basque:       Kaixo Mundua!
Belarussian:  Прывітанне Сусвет!
Bengali:      ওহে বিশ্ব!
Bulgarian:    Здравей свят!
Catalan:      Hola món!
Chichewa:     Moni Dziko Lapansi!
Chinese:      你好世界!
Croatian:     Pozdrav svijete!
Czech:        Ahoj světe!
Danish:       Hej Verden!
Dutch:        Hallo Wereld!
English:      Hello World!
Estonian:     Tere maailm!
Finnish:      Hei maailma!
French:       Bonjour monde!
Frisian:      Hallo wrâld!
Georgian:     გამარჯობა მსოფლიო!
German:       Hallo Welt!
Greek:        Γειά σου Κόσμε!
Hausa:        Sannu Duniya!
Hebrew:       שלום עולם!
Hindi:        नमस्ते दुनिया!
Hungarian:    Helló Világ!
Icelandic:    Halló heimur!
Igbo:         Ndewo Ụwa!
Indonesian:   Halo Dunia!
Italian:      Ciao mondo!
Japanese:     こんにちは世界!
Kazakh:       Сәлем Әлем!
Khmer:        សួស្តី​ពិភពលោក!
Kyrgyz:       Салам дүйнө!
Lao:          ສະ​ບາຍ​ດີ​ຊາວ​ໂລກ!
Latvian:      Sveika pasaule!
Lithuanian:   Labas pasauli!
Luxemburgish: Moien Welt!
Macedonian:   Здраво свету!
Malay:        Hai dunia!
Malayalam:    ഹലോ വേൾഡ്!
Mongolian:    Сайн уу дэлхий!
Myanmar:      မင်္ဂလာပါကမ္ဘာလောက!
Nepali:       नमस्कार संसार!
Norwegian:    Hei Verden!
Pashto:       سلام نړی!
Persian:      سلام دنیا!
Polish:       Witaj świecie!
Portuguese:   Olá Mundo!
Punjabi:      ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ ਦੁਨਿਆ!
Romanian:     Salut Lume!
Russian:      Привет мир!
Scots Gaelic: Hàlo a Shaoghail!
Serbian:      Здраво Свете!
Sesotho:      Lefatše Lumela!
Sinhala:      හෙලෝ වර්ල්ඩ්!
Slovenian:    Pozdravljen svet!
Spanish:      ¡Hola Mundo!         // Leading '¡' optional
Sundanese:    Halo Dunya!
Swahili:      Salamu Dunia!
Swedish:      Hej världen!
Tajik:        Салом Ҷаҳон!
Thai:         สวัสดีชาวโลก!
Turkish:      Selam Dünya!
Ukrainian:    Привіт Світ!
Uzbek:        Salom Dunyo!
Vietnamese:   Chào thế giới!
Welsh:        Helo Byd!
Xhosa:        Molo Lizwe!
Yiddish:      העלא וועלט!
Yoruba:       Mo ki O Ile Aiye!
Zulu:         Sawubona Mhlaba!

Таким образом, есть 74 языка, которые можно использовать.

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

Решение, которое может выводить фразу на наибольшем количестве языков, выигрывает. В случае ничьей выигрывает более короткое решение (в байтах).


* Переводы на малагасийский и мальтийский были помечены проверенными сообществом, но были явно неправильными (один был просто «Hello World!», А другой «Hello dinja!», Но только «Hello!» Переводится как «Бонгу!»). Они были исключены. Также некоторые языки (арабский, иврит, пушту, персидский и идиш) читаются справа налево в переводчике Google, но при копировании здесь читаются слева направо. Я надеюсь, что все в порядке.

Steadybox
источник
Разрешено ли нам использовать согласованный метод подсчета байтов, который не используется ни одним из используемых языков программирования?
Захари
@ Zacharý Я думаю, что для подсчета байтов можно использовать любую кодировку, которая имеет представление для всех символов, используемых в ответе. Или, может быть, байты должны учитываться в UTF-8 для каждого ответа?
Steadybox
1
Если у меня есть язык, который использует кодировку, отличную от всех остальных, должен ли я преобразовать код в кодовую страницу этого языка или использовать такое же представление байтов? (что будет сложно, потому что некоторые байты приводят к неправильному UTF-8)
NieDzejkob
2
@NieDzejkob Я думаю, что правило для полиглота - иметь один файл с измеряемым байтовым размером и может быть запущено несколькими интерпретаторами / компилятором. ( пример )
user202729
4
Обратите внимание, что восклицательные знаки на китайском и японском языках ( , U + FF01) отличаются от других ( !, U + 0021).
алефальфа

Ответы:

32

23 Befunges, 713 байтов

Единственный язык, который я действительно знаю, это Befunge, поэтому вместо нескольких языков я просто выбрал несколько реализаций Befunge. Я считаю, что это все еще действует в соответствии с правилами PPCG, которые считают, что язык будет определяться его реализацией .

8023/# !-1401p680p88+79*6+1p238*7+0pg90p$#v0';1';+>9%80p$$$$"ph~s"+3vv
vv_2#!>#-/\#21#:+#:>#\<0/-2*3`0:-/2g01g00p>#< 2#0 ^#1/4*:*9"9"p00***<<
>>$:2%3*-4/3g68*-70p1-0`02-3/-03-2%1+2/-70g+80g65+70g`7++3g68*-70g9`*v
0168:0>0133?45130120340200v00:<+8*+76%4p00+5/4:+-*86g3++98/2%+98g09+<<
                         @>gg#^:#+,#$"!"-#1_@
       !Helo Byd!!!!!Hai dunia!!!!Ciao mondo!!!Hallo Wereld!!!!
       !Hallo Welt!!!Halo Dunia!!!Halo Dunya!!!Bonjour monde!!!
       !Hei Verden!!!Hej Verden!!!Moien Welt!!!Labas pasauli!!!
       !Molo Lizwe!!!Salut Lume!!!Hei maailma!!Sveika pasaule!!
       !Hello World!!Salom Dunyo!!Tere maailm!!Sawubona Mhlaba!
       !Kaixo Mundua!Salamu Dunia!Sannu Duniya!!!!!!!!!!!!!!!!!

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

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

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

Онлайн переводчики

Установка не требуется. Обычно это просто вставка в код и нажатие кнопки или двух. Но обратите внимание, что некоторые из них довольно медленные, поэтому может потребоваться некоторое время, чтобы закончить выполнение.

Детская площадка Alexios 'Befunge - Саламу Дуня!

Нажмите Clear...кнопку и вставьте код в поле ввода. Переключите Editпереключатель, чтобы активировать переводчик, а затем нажмите Runкнопку, чтобы начать выполнение.
Обратите внимание, что этот сайт, вероятно, не будет работать в браузере, кроме Chrome.

Бефунгус - Моло Лизве!

Вставьте код в поле ввода, убедившись, что перезаписать существующий код. Затем нажмите Runкнопку, чтобы выполнить.

Переводчик Дэвида Клика Befunge 93 - Санну Дуния!

Вставьте код в поле ввода Playfield , а затем нажмите Runкнопку, чтобы начать выполнение.

Переводчик Яна Осгуда Befunge-93 - Салют Люме!

Вставьте код в поле ввода под Showкнопкой, убедившись, что перезаписали @уже существующее. Нажмите Showкнопку, чтобы импортировать код, затем нажмите Runкнопку, чтобы начать выполнение.

jsFunge IDE - Хей Верден!

Сначала закройте диалоговое окно « Справка », затем нажмите кнопку панели инструментов « Открыть / импортировать» (вторая слева), вставьте код и нажмите OK. Для выполнения нажмите кнопку « Run Mode» (четвертый слева), а затем « Start» (пятый слева).

Также обратите внимание, что некоторые консольные интерпретаторы фактически доступны в TIO, поэтому, хотя они не являются технически онлайн-переводчиками, их можно тестировать онлайн. Для тех, кто поддерживается (в настоящее время BEF, FBBI, MTFI и PyFunge), я включил пробную версию онлайн! ссылка рядом с их записью.

Java IDE

Для этого вам нужно установить среду выполнения Java, но теоретически они должны работать на любой платформе. Только проверено на Windows, хотя.

Визуальный апплет Эшли Миллс - Moien Welt!

Первоначально это был онлайн-апплет, который, к сожалению, больше не доступен, но вы все равно можете скачать jar и запустить его локально, как настольное приложение. Вам нужно будет вставить код в окно редактора программ , затем нажать Convertкнопку, а затем Runкнопку.

ВАСАБИ: Васаби - великолепно асининский переводчик - привет привет !

Чтобы вставить код, щелкните правой кнопкой мыши в верхнем левом углу окна редактора (он должен находиться в самом верхнем левом углу) и выберите пункт меню « Вставить» . Затем включите флажок « Полная скорость» (в противном случае это займет вечность) и нажмите Run!кнопку, чтобы начать выполнение.

YABI93: еще один переводчик Befunge93 - Halo Dunia!

Нажмите Ctrl+ A, Ctrl+, Vчтобы вставить код в окно редактора, обязательно перезаписав источник по умолчанию. Затем нажмите Startкнопку, чтобы начать выполнение.

Windows IDE

Обычно для этого вам понадобится Windows, хотя в некоторых случаях могут быть доступны двоичные файлы для других операционных систем. Я не могу обещать, что код будет работать на других платформах.

BefunExec - Привет, мир!

Вы не можете вставить код в редактор, поэтому сначала вам нужно сохранить его где-нибудь на диск. Затем из среды IDE используйте меню « Файл»> «Открыть», чтобы загрузить код с диска, и выберите меню « Моделирование»> «Выполнить / Пауза», чтобы запустить его.

BeQunge - Лабас пасаули!

Нажмите Ctrl+, Vчтобы вставить код, а затем нажмите кнопку « Отладка» на панели инструментов (синий значок), чтобы начать выполнение. Как только появится панель « Отладчик» , вы захотите установить максимальную скорость ( кнопка справа от ползунка), в противном случае для ее завершения потребуется целая вечность.

Грибок - тере маалм!

Нажмите Ctrl+, Vчтобы вставить код, а затем нажмите, F5чтобы запустить его.

Visbef: Visual Befunge '93 для Windows - Привет, оборотень !

Вы не можете вставить код в редактор, поэтому сначала вам нужно сохранить его где-нибудь на диск. Затем в IDE нажмите Ctrl+, Oчтобы открыть браузер файлов, загрузите код с диска и нажмите, F5чтобы запустить его.

Консольные приложения Windows

Опять же, они обычно требуют Windows, хотя другие платформы могут быть доступны, но не гарантированно работать.

Во всех случаях код должен быть сохранен в файл на диске, а имя файла передается интерпретатору в качестве параметра командной строки ( source.bf в приведенных ниже примерах командных строк). Также обратите внимание, что некоторые из них являются технически интерпретаторами Befunge-98 и должны запускаться с определенной опцией командной строки, чтобы включить режим совместимости с Befunge-93. Если вы этого не сделаете, вы не получите правильные результаты.

BEFI: переводчик Rugxulo Befunge-93 - Привет, Верден!

Командная строка: bef93w32 -q source.bf

CCBI: Соответствующий параллельный переводчик Befunge-98 - Sveika pasaule!

Командная строка: ccbi --befunge93 source.bf

MTFI: переводчик Magus Technica Funge - Hai dunia!

Командная строка: mtfi -3 source.bf( Попробуйте онлайн! )

Консольные приложения Python и PHP

Для этого требуется соответствующий язык сценариев - Python или PHP.

Befungee - Helo Byd!

Командная строка: befungee.py source.bf

PyFunge - Halo Dunya!

Командная строка: pyfunge -v 93 source.bf( Попробуйте онлайн! )

Bephunge - Bonjour Monde !

Командная строка: php bephunge.phps source.bf

Консольные приложения только для исходного кода

Они должны быть собраны из исходного кода, и это обычно проще всего в * nix-подобной среде. В Windows я использую подсистему Windows для Linux .

BEF: Справочное распределение Befunge-93 - Ciao mondo!

Командная строка: bef -q source.bf( Попробуйте онлайн! )

cfunge - Савубона Мхлаба!

Командная строка: cfunge -s 93 source.bf

FBBI: Flaming Bovine Befunge-98 Intepreter - Привет, маайлма!

Командная строка: fbbi -93 source.bf( Попробуйте онлайн! )

Грибы - Kaixo Mundua!

Командная строка: fungi source.bf

Rc / Funge-98 - Салом Дуньо!

Командная строка: rcfunge -93 source.bf

Как это устроено

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

  1. Первый - это чтение памяти за пределами допустимого диапазона со смещением -1,1. Теоретически это всегда должно возвращать 32 (пробел ASCII), но на практике было 10 вариантов. Этот тест усложняется тем фактом, что два интерпретатора дают сбой при чтении за пределами границ, поэтому для принудительного возврата этих двоих в границы потребовалась пара специальных тестов (округление деления и пробел).

  2. Вторая последовательность - это проверка работоспособности Befunge-98, в частности, инструкций ;и '. Почти все переводчики - Befunge-93 или работают в режиме совместимости с Befunge-93, поэтому они должны просто игнорировать эти инструкции. На практике было 6 различных способов интерпретации этой последовательности.

  3. Третий тест проверяет диапазон ячеек памяти. В эталонном интерпретаторе ячейки памяти подписаны 8-разрядными, но другие реализации варьируются в диапазоне от 8-разрядных до неограниченных, некоторые подписаны, а некоторые - без знака. Однако для целей этого теста нам нужно было только различить 5 из этих вариантов.

  4. Четвертая и последняя последовательность представляет собой комбинацию тестов недостаточного и отрицательного деления. Существует несколько способов, с помощью которых интерпретаторы неправильно понимают недополнение, и существует по крайней мере 3 различных способа реализации команд деления и по модулю, но здесь мы заботились только о 3 комбинациях.

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

Джеймс Холдернесс
источник
Довольно дешевый метод, но я не могу победить это. Теперь мы могли бы скорректировать это и сжать варианты BrainFuck там.
Захари
10
Уверяю вас, это не так просто, как вы можете себе представить. Трудно заставить код работать без сбоев в более чем 20 глючных интерпретаторах. Если бы я хотел быть дешевым, я бы использовал Befunge-98 и просто запросил handprints реализации ( 3y).
Джеймс Холдернесс
2
Я имею в виду дешевизну и то, как вы используете только befunges, но на самом деле это очень впечатляет.
Захари
Это невероятно впечатляет, но можно ли объяснить, почему разные переводчики относятся к этому по-разному? Может быть, не все 23 версии, но несколько примеров поведенческих различий, которые вы используете, по крайней мере?
Джек Браунштейн,
1
@JackBrounstein Я добавил немного объяснения в конце ответа.
Джеймс Холдернесс
64

16 языков, 1363 байта

 #define ip"MemuL tulaS",,,,,,,,,,"!",@++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.@,kc"Kaixo Mundua!"v#!
#define print(A,B,C)main(){printf("Helo Byd!");}//ss                                                                          ;ooooooooooooooooooo"Moni Dziko Lapansi!"<  
#ifdef __cplusplus//p                                                                                                                                 ;;];;
#include<cstdio>//ffffffffff?
#define print(A,B,C)int main(){printf("Halo Dunya!");}//ssp
#endif//;  [;;;;;;;;;     "!etejivs vardzoP"]
#ifdef __OBJC__//;;;;;
#define print(A,B,C)main(){printf("Hallo Welt!");}//ss
#endif//\
"""echo" "Salom Dunyo!";"exit";puts"Moien Welt!";\
__END__
#define B//\
"""#;;;;;
print(["Hai dunia!","Hej Verden!","Halo Dunia!"][(int(1>0)is 1)+~int(-1/2)*2])
#define s eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeejeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeejiiiiiiiijeeeeeeeeeeeeeejiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeejeejijiiiiiiiiiijeeeeeeeeeeejiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij
#define U   !"!dlereW ollaH"<           ;
#define T@,kc"Sannu Duniya!?%?"

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

(используйте «переключение языков» для изменения языка)

  • Питон 3 = Halo Dunia! (Индонезийский)

  • Python 2 = Хей Верден! (Датский)

  • Питон 1 = Хай Дуня! (Малайский)

  • C (GCC) = Helo Byd! (Валлийский)

  • C ++ (gcc) = Halo Dunya! (Сунданский)

  • Цель C (лязг) = Привет Welt! (Немецкий)

  • Brainfuck = Привет, мир! (Очевидно, английский)

  • Befunge-93 = Салют Люм! (Румынский)

  • Рубин = Мойен Вельт! (Люксембургский)

  • Баш = Салом Дуньо! (Узбекский)

  • Befunge-98 (PyFunge) = Kaixo Mundua! (Басков)

  • Unefunge-98 (PyFunge) = Санну Дуния! (Хауса)

  • Кардинал = Привет! (Нидерландский язык)

  • Альфак = Чао Мондо! (Итальянский)

  • > <> = Мони Джико Лапанси! (Чичева)

  • Деление = Поздрави свиете! (Хорватский)

Любые советы по игре в гольф приветствуются (особенно на Brainfuck)!

Спасибо @JonathanFrech за -1 байт! Также спасибо @ovs за -40 байтов!

Как (общие идеи, я на самом деле забыл конкретику) ??

Языки можно разделить на четыре группы:

  • Макрос: C, C ++, Цель C
  • Комментарий: Python3, Python2, Python1, Ruby, Bash
  • Размерный: Befunge-93, Befunge-98, Unefunge-98, Кардинал,> <>, Деление
  • Вульгарный: Brainfuck, Alphuck

Языки макросов рассматриваются #как начало директивы препроцессора. Они используются по трем причинам: для размещения кода для других групп, для различения языков макросов и для определения макроса. Все три используются в //качестве комментариев, поэтому после этого мы храним код для других групп. Также обратная косая черта продолжает комментарий на этих языках.

Языки комментариев видятся #как начало комментария. Причудой здесь являются тройные кавычки, которые отличают Питонов от Руби от Баша. И чтобы отличить Python 1 от 2 от 3, мы используем отличительную особенность во всех трех, а также массив выходных данных. Ах да, есть и это __END__. Это используется для завершения кода для некоторых (не помню точно, какие именно) языков комментариев.

Пространственные языки различаются так, что их трудно объяснить. Нужно знать специфику каждого языка, чтобы понять это. Например, #это только пропуск в фунгеоидах, в то время как он делает разные вещи на других языках. Код разбросан повсюду для этих языков.

И наконец, мы приходим к вульгарным языкам. Эти двое игнорируют все, что не входит в их набор допустимых символов. Необходимо выполнить балансировку с этими и другими языками, так как код уже содержит символы в наборах символов.

Zachary
источник
Можете ли вы объединить строки в представлении Python в одну большую строку и использовать нарезку строк для ее индексации? например "abcabcabc"[n::3] -> "aaa" for n = 0, "bbb" for n = 1. Я чувствую, что, возможно, есть способ нарезать его и сохранить байты, как-то включив дублированные символы в срез (например, H и!).
Коул
2
Здорово! скобки в ["Hai dunia!","Hej Verden!","Halo Dunia!"]щите запятые!
Уриэль
3
Им не нужно, я злоупотребляю тем фактом, что TIO Brainfuck по умолчанию 0 (или ничего не делает, я не могу сказать), если он исчерпал ввод от пользователя. Есть 9 других неэкранированных запятых, которые злоупотребляют этим фактом.
Захари
2
Есть ли причина, по которой вы не используете +[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.свою часть BF? ( источник )
Esolanging Fruit
1
Я добавил объяснение для тех, кто хочет это увидеть.
Захари
38

15 языков, 532 байта

# ;"!audnuM oxiaK">:#,_@R"Hej Verden!";;@,kb"Tere maailm!";# w"!amliaam ieH"ck,@oooooooooo"Hai dunia!"
`true #{puts'Hola món!'}` \
__END__
"Hola Mundo!" puts
case `ps -p$$ -oargs=` in \
b*)echo Hallo Welt!;;k*)echo Ndewo Ụwa!;;d*)echo Ciao mondo!;;z*)echo Moien Welt!;;a*)echo Hei Verden!;;esac
true; 
#xx
#x%"Olá Mundo!"x
#xx+++[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.
   	  	   
	
     		  	 	
	
     		 		  
	
     		 				
	
     	     
	
     	    	 
	
     				  	
	
     		  	  
	
     	    	
	
  

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

  1. Kaixo Mundua! в Befunge-93
  2. Hej Verden! в делении
  3. Tere maailm! в Unefunge-98
  4. Hei maailma!! в Befunge-98
  5. Hai dunia! в> <>
  6. Hola món! в рубине
  7. Hola Mundo! в GolfScript
  8. Hallo Welt! в баш
  9. Ndewo Ụwa! в кш
  10. Ciao mondo! в спешке
  11. Moien Welt! в зш
  12. Hei Verden! в пепле
  13. Olá Mundo! в кардинал
  14. Hello World!в мозгах, любезно предоставлено primo .
  15. Helo Byd! в пробелах

объяснение

Строка 1 различает пять двумерных эсолангов:

  1. ><>читает #как зеркало, оборачивается влево, печатает "Hai dunia!"и вылетает (@ ). Все Веселья читают это как батут и идут прямо.
  2. Befunge-93 игнорирует ;, печатает Kaixo Mundua!и выходит (@ ).
  3. Funges '98 перепрыгивают с первого ;на второе, затем с третьего ;на четвертое. wэто NOP для Befunge-98, печатьHei maailma! .
  4. Но wотражает указатель инструкции в Unefunge-98, печатаяTere maailm! .
  5. Деление не начинается в верхнем левом углу вообще. R"Hej Verden!";выполнен. (Другой указатель инструкции начинается с Din __END__, но он ничего не делает, затем умирает для ;in true;.)

Руби видит `true #{puts'Hola món!'}`, тогда __END__.

GolfScript видит `, затем true(NOP), затем комментарий; затем __END__(NOP); затем "Hola Mundo!" puts(это выполняется); затем case(NOP), затем `(вылетает при пустом стеке).

Оболочки видят комментарий, затем вызов true(NOP), затем вызовы неизвестных команд __END__и "Hola Mundo!"(какая ошибка для STDERR, но выполнение продолжается), затемcase оператор, который различается на основе первой буквы имени текущего процесса.

Cardinal - это еще один двумерный esolang, который начинается с %отправки 4 IP-адресов вверх, вниз, влево и вправо. Они все убиты окружающими xкомандами, но один печатает "Olá Mundo!"перед смертью.

Код брейкфак - это примо, с префиксом, ++чтобы противодействовать тире ps -p$$ -oargs=.

Пробелы в моем коде выполняются как программа пробелов

 push 0
 push 0
label_0:
 push 0
 push 0
 drop
 drop
 push 72; printc
 push 101; printc
 push 108; printc
 push 111; printc
 push 32; printc
 push 66; printc
 push 121; printc
 push 100; printc
 push 33; printc

какие отпечатки Helo Byd!

РЕДАКТИРОВАТЬ : я забыл, что добавление UDLRсимволов нарушает программу Fission, поэтому я изменил строки, чтобы избежать этого.

Линн
источник
1
Я скоро тебя достану.
Захари
1
Я думаю, я сдаюсь сейчас, вы проделали потрясающую работу.
Захари
Я чувствую себя немного плохо, потому что в вашем решении языки взаимодействуют гораздо интереснее! Я только что добавил свой ответ «5 оболочек» эзолангами, которые легко объединить друг с другом…>. <;
Линн
1
Теперь, если кто-нибудь сможет полиглотировать эти языки с помощью D , я всегда буду в восторге. ( #defineне вещь в D ... которая мешает многоплановости). Кроме того, мне действительно нужно учить пробелы.
Захари
1
о, теперь я вижу больше заглавных букв Я исправлю это немного, выбирая разные Hello Worlds.
Линн
12

7 языков, 221 байт

<?php echo'مرحبا بالعالم!';die?>h+#;"!dlereW ollaH"ck,@;
;echo Kaixo Mundua!;                        <@,k+4f"ሰላም ልዑል!"

Բարեւ աշխարհ!
@,k+4f"Përshendetje Botë!";XXXX;"Hello Wêreld!"

Так как эта программа содержит несколько неприятных символов, вот xxd:

00000000: 3c3f 7068 7020 6563 686f 27d9 85d8 b1d8  <?php echo'.....
00000010: add8 a8d8 a720 d8a8 d8a7 d984 d8b9 d8a7  ..... ..........
00000020: d984 d985 2127 3b64 6965 3f3e 682b 233b  ....!';die?>h+#;
00000030: 2221 646c 6572 6557 206f 6c6c 6148 2263  "!dlereW ollaH"c
00000040: 6b2c 403b 0a0c 3b65 6368 6f20 4b61 6978  k,@;..;echo Kaix
00000050: 6f20 4d75 6e64 7561 213b 2020 2020 2020  o Mundua !;
00000060: 2020 2020 2020 2020 2020 2020 2020 2020
00000070: 2020 3c40 2c6b 2b34 6622 e188 b0e1 888b    <@,k+4f"......
00000080: e188 9d20 e188 8de1 8b91 e188 8d21 220a  ... .........!".
00000090: 0ad4 b2d5 a1d6 80d5 a5d6 8220 d5a1 d5b7  ........... ....
000000a0: d5ad d5a1 d680 d5b0 210a 402c 6b2b 3466  ........!.@,k+4f
000000b0: 2250 c3ab 7273 6865 6e64 6574 6a65 2042  "P..rshendetje B
000000c0: 6f74 c3ab 2122 3b58 5858 583b 2248 656c  ot..!";XXXX;"Hel
000000d0: 6c6f 2057 c3aa 7265 6c64 2122 0a         lo W..reld!".
NieDzejkob
источник
Почему нет <?='مرحبا بالعالم!';die?>? Это действительный PHP (по сути, такой же, как <?php echo ... ?>),
Исмаэль Мигель
@IsmaelMiguel, потому что я забыл об этой функции ... просто так
NieDzejkob
9

5 языков, 168 байт

  //"!nedreV jeH",,,,,,,,,,,@R"Hello World!"*#x
///"!mliaam ereT">:?v; x"!dyB oleH"           %x
//               ^ o<                         x
// >`Sawubona Mhlaba!`;

Я думаю, что двумерные языки интересны.

> <> принты Tere maailm!
Befunge-98 принты Hej Verden!
пчелиный воск принты Sawubona Mhlaba!
кардинальные принты отпечатки Helo Byd!
деленияHello World!

Попробуйте онлайн! (Кардинал)

KSmarts
источник
2
Я вижу большой потенциал здесь, так как //есть комментарии на многих языках.
Захари
@ Zacharý Это единственная причина, почему большинство из них там. Прямо сейчас, два используются для> <> и один для воска. Те, что в первых двух столбцах, ничего не делают.
KSmarts
Можете ли вы объяснить поток управления для пчелиного воска? Я хочу посмотреть, подходит ли он для этой задачи .
Potato44
@ Potato44 Это двумерный язык, который интерпретирует код как ограниченную шестиугольную сетку, поэтому указатели могут перемещаться в 6 направлениях. Пчелы (указатели) порождаются персонажами */\_и могут быть перенаправлены в фиксированных направлениях или с помощью зеркал или поворота. Смотрите здесь для получения дополнительной информации.
KSmarts
Вы можете сократить его на 1 байт, потому что для части воска пчелы ;после второго обратного удара не требуется. Пчела просто бежит от соты вправо.
ML
7

2 языка, 16 символов, 24 байта

Ну, по крайней мере, это короче, чем обе строки.

L"שלום עולם"33ç«

05AB1E -שלום עולם!

Помогите, WarDoq! -Hello World!

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

Уриэль
источник
IIRC, они не один байт в 05AB1E, это только из-за ограничений TIO. \
Zacharý
@ Захари, ты уверен? Я знаю, что в некоторых кодировках ивритские символы составляют 1 байт. Могут быть перекрывающиеся коды символов.
Уриэль
Вы видите иврит здесь ?
Захари
@ Zacharý исправлено (я думаю, что это будет 24 байта)
Uriel
6

3 языка, 67 62 байта

Чтобы претендовать на эту награду (100 респ).

x:Helo Byd!
O
y:"Hai dunia!"
u?`h;`4$'5^5D+Asi:^:E+IvIvAB*vhm,

Добавить ++: Попробуйте онлайн!

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

Сомма: попробуйте онлайн!

объяснение

Добавить ++

Add ++ видит:

x:Helo Byd!
O

«Выходная xстрока»

y:"Hai dunia!"

«Установите y в другую строку»

u?`h;`4$'5^5D+Asi:^:E+IvIvAB*vhm,

"Иди что-нибудь странное, я выведу ошибку"

Foo

Фу видит:

x:Helo Byd!
O
y:"Hai dunia!"

«О, цитаты, я выведу их».

u?`h;`4$'5^5D+Asi:^:E+IvIvAB*vhm,

"Э-э ... что-то о режиме? Идк, я выведу ошибку".

Сомма

Сомма видит, ну, это:

8s+vi:4+vhIvE-Asi:^:E+IvIvAB*vhm,

Каждый столбец преобразуется в кодовые точки, затем из них вычитается 32, затем каждый берется по модулю 95. Это соответствует этим символам, которые печатают «Hei Verden!»

Конор О'Брайен
источник
Ну, неделя подошла к концу, и вы самый короткий (и единственный) конкурирующий ответ, так что поздравляю вас с наградой!
Caird Coneheringaahing
@cairdcoinheringaahing Спасибо! : D
Конор О'Брайен
5

4 языка, 138 байтов

''' '/*' '''
print(["Bonjour monde!","Hei maailma!","Hallo Wereld!"][((int(not 0)is 1)+2*int(1/2==0))-1])
''' '*/print("Hallo Welt!")' '''

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

Py1, Py2, Py3, Proton; спасибо мистеру Xcoder; переведено из ответа Захари

HyperNeutrino
источник
4 языка (Proton, Py1, Py2, Py3). Вдохновленный ответом Zacharý .
г-н Xcoder
@ Mr.Xcoder О, круто, спасибо!
HyperNeutrino
4

4 языка, 115 байт

print ((("b" + "0" == 0)and eval('"Hallo Wereld!"'))or(0 and"Hello World!"or(1/2and"Hei Verden!"or"Hej Verden!")));

Perl 5 дает Hallo Wereld!- TIO

Руби дает Hello World!- TIO

Python 2 дает Hej Verden!- TIO

Python 3 дает Hei Verden!- TIO

Халвард Хаммель
источник
107 байт -print (((“b”+”0"==0)and eval('"Hallo Wereld!"'))or(0and"Hello World!”or((1/2and"Hei"or"Hej")+" Verden!")));
Jollywatt
4

Четыре языка, колоссальные 650 байтов

//iiciccepepceaiiiaiaiaicccsascciijceeeeeejccijjccjceaajaajcccjeeejaajaaijcccej
//[
/*
GOTO end
*/
//pis
//p
//p
//\u000Apublic class Main{public static void main(String[]a){System.out.print("Salut Lume!");}}
/*
lblend
print Hola Mundo!
//s
*/
//]
//s
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++.--------.++++++++++++++.-------------------------------------------------------------------------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++.-.----------.+++++++++++.------------------------------------------------------------------------------.

Ява дает "Салют Люм!" Попробуй!

СИЛОС дарит "Хола Мундо" Попробуйте!

Brainfuck дает "Ciao Mondo!" Попробуй!

(Код alphuck изменен со страницы Esolangs в Alphuck )

Alphuck дает "Hello World!" Попробуй!

Начало строки \ u000A - это код Java. Код в первой строке - это код Alphuck, который игнорирует остальную часть кода (до тех пор, пока "p" и "s" сбалансированы. Соответствующей строкой для SIL / SILOS является "print Hola Mundo", а также код brainfuck находится в конце и будет игнорировать остальную часть кода.

Рохан Джунджхунвала
источник
1
Я думаю, что вы можете поиграть в код BF, используя константы, представленные на этой странице, и методы, используемые там.
Коул
@cole Я пытаюсь по-другому взглянуть на код bf, когда у меня появляется больше времени для его оптимизации. По сути, я не думаю, что достаточно просто использовать константы, мне нужно определить рекуррентное отношение
Rohan Jhunjhunwala
1
78 для 'Ciao mondo!': +>++>+>+++[+++++[>+++++++++++>++++<<-]+++<]>>--.>+.>.>-.>.<--.++.-.<+++.>+.>+.Использование последовательности байтов [69, 104, 97, 112, 32]
primo
4

5 языков, 213 байтов

Я решил попробовать написать небольшой ответ сам.

#include<stdio.h>
#define hint(x)int main(){auto i=.5;puts(i?"Hallo Welt!":"Hei maailma!");}
#define R "Pozdrav svijete!";
#if 0
hint=print
goto=len
s="Tere maailm!"
goto("endif")
s="Hallo Wereld!";
#endif
hint(s)

Языки:

C:                                       Hei maailma!      (Finnish)
C++:                                     Hallo Welt!       (German)
Python 3:                                Hallo Wereld!     (Dutch)
Operation Flashpoint scripting language: Tere maailm!      (Estonian)
Fission:                                 Pozdrav svijete!  (Croatian)

C и C ++ видят код как:

#include<stdio.h>
#define hint(x)int main(){auto i=.5;puts(i?"Hallo Welt!":"Hei maailma!");}
#define R "Pozdrav svijete!"; // Unused macro
hint(s)

auto i=.5;(в действительности) равен int i=0;в C, но равенdouble i=0.5; в C ++.

Попробуйте онлайн! (как С)

Попробуйте онлайн! (как C ++)

Python 3 видит код как:

hint=print
goto=len
s="Tere maailm!"
goto("endif")         # Calculate string length and discard the result.
s="Hallo Wereld!"
hint(s)

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

Язык сценариев OFP видит:

; (A semicolon at the beginning of a line comments the line in a script.)

; Four labels with strange names.
#include<stdio.h>
#define hint(x)int main(){auto i=.5;puts(i?"Hallo Welt!":"Hei maailma!");}
#define R "Pozdrav svijete!";
#if 0

; Assign a null value to "hint", no practical effect. Same for "goto".
hint=print
goto=len

; Assign the string to variable "s".
; I would like to have used the Czech phrase for OFP (because it's a Czech game),
; but it didn't recognize the 'ě' and printed a '?' instead.
s="Tere maailm!"

; Jump to label "endif".
goto("endif")

; This reassignment of "s" gets skipped.
s="Hallo Wereld!";

; Declare a label called "endif".
#endif

; Print the string "s".
hint(s)

Деление видит:

R "Pozdrav svijete!";

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

Steadybox
источник
2

3 языка, 184 181 байт

Работает только один раз - вы должны очистить список, чтобы запустить его снова.

when gf clicked
add<[]=[]>to[c v
if<(join(item(1 v)of[c v])[d])=[1d
say[Helo Byd!
else
repeat(300000
add[]to[c v
end
if<(length of[c v])>[250000
say[Hello world!
else
say[Hai dunia!

Царапина 1.4: Helo Byd!

Скретч 2.0: Hello world!

Скретч 3.0 бета на момент ответа: Hai dunia!

объяснение

В Царапина 1.4, добавив булево к списку добавляет 1или 0, но в версии 2.0 и выше он добавляет trueили false, но при проверке , если элемент равен 1с <[] = []>, она возвращает истину , если элемент либо 1илиtrue поэтому мы добавляем еще одно письмо и проверяем это.

В Scratch 3.0 максимальный размер списков составляет 200 000 элементов, поэтому мы просто добавляем несколько элементов и проверяем, не слишком ли длинный список.

WK
источник
1

3 языка, 61 байт

;“,ḷṅḳȦ»Ḋḷ“
x:Hai dunia!
O
y:"Helo Byd!"
;”

Добавить ++ выходыHai dunia!

Желе выходыHello World!

Foo выходыHelo Byd!

То, что я назначил награду, не означает, что я не могу принять участие: D (ab) использует блестящий трюк с настройкой струн, который нашел Конор для Add ++

Как это устроено

Добавить ++

;“,ḷṅḳȦ»Ḋḷ“     ; A comment. This does nothing
x:Hai dunia!    ; Set the x accumulator to the string "Hai dunia!"
O               ; Output x
y:"Helo Byd!"   ; Set the y accumulator to the string "Helo Byd!"
;”              ; Another comment

Желе

Комментарии в Jelly могут быть сформированы с помощью синтаксиса ḷ“comment”, так как код Add ++ и Foo игнорируется. Код, который фактически выполняется Jelly,

;“,ḷṅḳȦ»Ḋ - Main link. Arguments: None
 “,ḷṅḳȦ»  - Yield the string "Hello World!"
;         - Append 0, yielding "0Hello World!"
        Ḋ - Remove the first character, yielding "Hello World!"

Foo

Foo игнорирует все символы здесь, кроме "Helo Byd!", которые, как и в кавычках, выводятся.

Caird Coneheringaahing
источник