Привіт, світ у кількох мовах


72

Завдання

Створіть програму або функцію, яка дійсна для декількох мов програмування, і коли їх компілюють / інтерпретують як різні мовні виходи "Привіт, світ!" іншою природною мовою.

Наприклад, допустиме рішення може виводити 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 Hello,", а сам "Hello!" Перекладається як "Bongu!"). Вони були виключені. Також деякі мови (арабська, іврит, пушту, перська та ідиш) читають справа наліво в Google Translate, але коли їх копіюють, вони читають зліва направо. Я сподіваюся, що це нормально.


Чи дозволяється нам використовувати послідовний метод підрахунку байтів, який не використовується жодною з мов програмування, які використовуються?
Zacharý

@ Zacharý Я думаю, що будь-яке одне кодування, яке має представлення для всіх символів, які використовуються у відповіді, може бути використане для підрахунку байтів. Чи, можливо, байти слід рахувати в UTF-8 за кожну відповідь?
Steadybox

1
Якщо у мене мова, яка використовує інше кодування, ніж усі інші, чи слід перетворювати код на кодову сторінку цієї мови або використовувати те саме байтове подання? (що було б важко, оскільки деякі байти призводять до неправильної UTF-8)
NieDzejkob

2
@NieDzejkob Я думаю, що правило для поліглоту - це один файл із вимірюваним байтовим розміром, який може працювати декількома перекладачем / компілятором. ( приклад )
користувач202729

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 - Salamu Dunia!

Натисніть Clear...кнопку та вставте код у поле введення. Натисніть Editперемикач, щоб активувати перекладач, а потім натисніть Runкнопку, щоб почати виконання.
Зауважте, що цей сайт, ймовірно, не працюватиме в браузері, крім Chrome.

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

Вставте код у поле введення, переконайтесь, що ви перезаписали існуючий код. Потім натисніть Runкнопку для виконання.

Перекладач Девід Кліка Befunge 93 - Sannu Duniya!

Вставте код у поле вводу Playfield та натисніть Runкнопку, щоб розпочати виконання.

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

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

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

Спочатку закрийте діалогове вікно довідки , потім натисніть кнопку Відкрити / Імпортувати панель інструментів (друга зліва), вставте код та натисніть кнопку OK. Щоб виконати, натисніть кнопку « Режим запуску » (четверта зліва), а потім « Пуск» (п'ята зліва).

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

Java IDE

Для цього вам потрібно встановити час виконання Java, але теоретично вони повинні працювати на будь-якій платформі. Проте протестується лише в Windows.

Елемент візуального запуску Ешлі Міллс - Moien Welt!

Спочатку це був онлайн-аплет, який, на жаль, більше не доступний, але ви все одно можете завантажити банку та запустити її локально як настільний додаток. Вам потрібно буде вставити код у вікно редактора програм , потім натиснути Convertкнопку, а потім Runкнопку.

ВАСАБІ: Перекладач Васабі - це надзвичайно асинінський перекладач - Hallo Welt!

Щоб вставити код, клацніть правою кнопкою миші у верхньому лівому куті вікна редактора (він повинен бути в самому верхньому лівому куті) та виберіть пункт меню Вставити . Потім увімкніть прапорець " Повна швидкість " (інакше це буде вічно) і натисніть Run!кнопку, щоб почати виконання.

YABI93: Ще один перекладач Befunge93 - Halo Dunia!

Натисніть Ctrl+ A, Ctrl+, Vщоб вставити код у вікно редактора, обов'язково перезаписавши джерело за замовчуванням. Потім натисніть Startкнопку, щоб почати виконання.

Ідентифікатори Windows

Зазвичай для цього вам знадобиться Windows, хоча в деяких випадках можуть бути доступні бінарні файли для інших операційних систем. Я не можу пообіцяти, що код буде працювати на інших платформах.

BefunExec - Hello World!

Ви не можете вставити код у редактор, тому спочатку потрібно буде його зберегти на диску десь. Потім з IDE використовуйте меню Файл> Відкрити для завантаження коду з диска та виберіть меню Моделювання> Запуск / пауза, щоб запустити його.

BeQunge - Labas pasauli!

Натисніть Ctrl+, Vщоб вставити код, а потім натисніть кнопку панелі інструментів налагодження (синій зубчик), щоб почати виконання. Щойно з'явиться панель налагодження , ви захочете встановити швидкість на максимум - кнопку праворуч від повзунка - інакше закінчиться вічно.

Грибок - Tere maailm!

Натисніть Ctrl+, Vщоб вставити код, а потім натисніть F5для запуску.

Visbef: Visual Befunge '93 для Windows - Hallo Wereld!

Ви не можете вставити код у редактор, тому спочатку потрібно буде його зберегти на диску десь. Потім з IDE натисніть Ctrl+, Oщоб відкрити браузер файлів і завантажити код з диска, і натисніть, F5щоб запустити його.

Програми консолі Windows

Знову для цього зазвичай потрібна Windows, хоча інші платформи можуть бути доступні, але не гарантовано працювати.

У всіх випадках код потрібно буде зберегти у файл на диску, а ім'я файлу передано інтерпретатору як параметр командного рядка ( source.bf у прикладі командних рядків, наведених нижче). Також зауважте, що деякі з них технічно є перекладачами Befunge-98, і їх слід запускати з певним параметром командного рядка, щоб застосувати режим сумісності Befunge-93. Якщо цього не зробити, ви не отримаєте правильних результатів.

БЕФІ: Перекладач Rufunx-Befunge-93 - Хей Верден!

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

CCBI: Відповідний перекладач Befunge-98 - Sveika pasaule!

Командна лінія: ccbi --befunge93 source.bf

MTFI: Magum Technica Funge Interpreter - 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( Спробуйте в Інтернеті! )

забитися - Sawubona Mhlaba!

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

FBBI: Палаючий телячий бичок Befunge-98 - Hei maailma!

Командний рядок: fbbi -93 source.bf( Спробуйте в Інтернеті! )

Гриби - Кайшо Мундуа!

Командний рядок: fungi source.bf

Rc / Funge-98 - Salom Dunyo!

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

Як це працює

Завданням цього було пошук найменшої кількості тестів, які забезпечували найбільшу диференціацію між перекладачами. Врешті-решт, вона зійшла до чотирьох основних тестових послідовностей:

  1. Перший - це позапам’ятна пам'ять, яку читають із зміщення -1,1. Теоретично це завжди повинно повертати 32 (простір ASCII), але насправді було 10 варіацій на практиці. Цей тест ускладнюється тим, що двоє перекладачів виходять з ладу за межею читання, тому для змушення цих двох повернень у межі потрібно було декілька тестів на випадок особливих випадків (округлення поділу та зведення міст).

  2. Друга послідовність - це тест функціональності Befunge-98 - конкретно інструкції ;та '. Майже всі перекладачі є Befunge-93 або працюють у режимі сумісності Befunge-93, тому вони повинні просто ігнорувати ці інструкції. На практиці було 6 різних способів інтерпретації цієї послідовності.

  3. Третій тест перевіряє діапазон комірок пам'яті. У довідковому інтерпретаторі комірки пам'яті підписані 8-бітовими, але інші реалізації відрізняються в діапазоні від 8-бітових до безмежних, деякі підписані та деякі непідписані. Однак для цілей цього тесту нам довелося розрізняти лише 5 таких варіантів.

  4. Четверта і заключна послідовність - це комбінація тестів на підтік та негативний поділ. Існує декілька способів, за допомогою яких перекладачі неправильно перетворюються, і є щонайменше 3 різних способи втілення інструкцій щодо поділу та модуля, але тут було лише три комбінації, про які ми піклувались.

Кожна з цих послідовностей повертала одне число, і ці чотири числа поєднувались (через деякі основні таблиці арифметики та перекладу), щоб отримати кінцеве значення в діапазоні від 0 до 22. Це значення може бути використане як індекс для пошуку фактичного повідомлення показувати.


Досить чіп-метод, але я не можу це перемогти. Тепер ми, мабуть, могли б це відрегулювати та видавити варіанти BrainFuck.
Zacharý

10
Запевняю, це не так просто, як ви могли собі уявити. Це виклик просто змусити код запустити, не врізавшись у 20+ помилкових перекладачів. Якби я хотів бути дешевим, я б використав Befunge-98 і просто запитав відбитки рук реалізації ( 3y).
Джеймс Холдернесс

2
Я маю на увазі дешеве, як у тому, як ви користуєтесь лише вимиками, але це насправді дуже вражає.
Zacharý

Це неймовірно вражає, але чи можна пояснити, чому різні тлумачі ставляться до цього по-різному? Можливо, не всі 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!?%?"

Спробуйте в Інтернеті!

(використовуйте "мови переключення", щоб змінити мову)

  • Python 3 = Halo Dunia! (Індонезійська)

  • Пітон 2 = Хей Верден! (Датська)

  • Пітон 1 = Хай дунія! (Малайська)

  • C (gcc) = Helo Byd! (Валлійська)

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

  • Завдання C (кланг) = Hallo Welt! (Німецька)

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

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

  • Рубі = Moien Welt! (Люксембург)

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

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

  • Unefunge-98 (PyFunge) = Sannu Duniya! (Хауса)

  • Кардинал = Hallo Wereld! (Голландська)

  • Альфук = Ciao mondo! (Італійська)

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

  • Fission = Поздрав світе! (Хорватська)

Будь-які поради щодо гольфу вітаються (особливо на Brainfuck) !!

Дякуємо @JonathanFrech за -1 байт! Також дякую @ovs за -40 байт!

Як (загальні ідеї, я фактично забув специфіку) ??

Мови можна розділити на чотири групи:

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

Мови макросів вважають #початком директиви про препроцесор. Вони використовуються з трьох причин: для визначення коду для інших груп, для розрізнення мов макросів та для фактичного визначення макросу. Усі три використовують //як коментар, тому після цього ми зберігаємо код для інших груп. Також нахил продовжує коментар цими мовами.

Мови коментарів розглядаються #як початок коментаря. Вигадка тут - потрійні цитати, які відрізняють пітонів від Рубі від Баша. А щоб відрізнити Python 1 від 2 від 3, ми використовуємо відмітну особливість у всіх трьох разом із масивом виходів. О так, є і це __END__. Це використовується для закінчення коду для деяких (не пам'ятаю, які саме) мови коментарів.

Мови розмірів розрізняють так, що важко пояснити. Треба знати специфіку кожної мови, щоб зрозуміти її. Наприклад, #це лише пропуск у fungeoids, тоді як він робить різні речі на інших мовах. Код міститься скрізь для цих мов.

І нарешті, ми доходимо до Вульгарних мов. Ці двоє ігнорують все, що не входить у їх набір дійсних символів. З цими мовами та іншими мовами потрібно відтворити акт врівноваження, оскільки код вже містить символи в наборах символів.


Чи можете ви об'єднати рядки в поданні Python в одну велику рядок і використовувати нарізку рядків, щоб ввести в неї індекс? напр "abcabcabc"[n::3] -> "aaa" for n = 0, "bbb" for n = 1. Я відчуваю, що, ймовірно, існує спосіб, коли ви можете його нарізати і зберегти байти, включивши як-небудь дублювані символи в нарізку (як Н і!).
Коул

2
Класно! дужки в ["Hai dunia!","Hej Verden!","Halo Dunia!"]щиті коми!
Уріель

3
Їм не потрібно, я зловживаю тим, що TIO brainfuck за замовчуванням 0 (або нічого не робити, я не можу сказати), якщо у нього закінчується вхід від користувача. Є ще 9 незахищених коми, які зловживають цим фактом.
Zacharý

2
Чи є причина, яку ви не використовуєте +[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.для своєї частини BF? ( джерело )
Esolanging Fruit

1
Я додав пояснення для кожного, хто хоче його побачити.
Zacharý

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! в Бефунге-93
  2. Hej Verden! у Fission
  3. Tere maailm! в Unefunge-98
  4. Hei maailma!! в Бефунге-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!в мозку, люб'язно з прима .
  15. Helo Byd! в Whitespace

Пояснення

Рядок 1 розрізняє п’ять 2D езоланг:

  1. ><>читається #як дзеркало, загортається ліворуч, друкується "Hai dunia!"та збивається ( @). Усі Фонди читають це як батут і йдуть правильно.
  2. Befunge-93 ігнорує ;, друкує Kaixo Mundua!та виходить ( @).
  3. Фуги '98 року стрибають з першого ;на другий, потім з третього ;на четвертий. wє НОП для 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__(НОП); потім "Hola Mundo!" puts(це виконується); тоді case(NOP), потім `(виходить з ладу на порожній стек).

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

Кардинал - це ще один двовимірний езоланг, який починається з %, надсилаючи 4 IP-адреси вгору, вниз, вліво та вправо. Всі вони вбиті навколишніми xкомандами, але один друкує "Olá Mundo!"перед смертю.

Код головного мозку є першоджерелом з префіксом ++для протидії тире в ps -p$$ -oargs=.

Пробіл у моєму коді виконується як програма Whitespace

 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!

EDIT : Я забув, що додавання UDLRсимволів порушує програму Fission, тому я змінив рядки, щоб уникнути цих.


1
Я скоро вас отримаю.
Zacharý

1
Я думаю, що я здаюся зараз, ти зробив дивовижну роботу.
Zacharý

Я почуваюся трохи погано, тому що у вашому рішенні мови взаємодіють набагато цікавішими способами! Я дійсно просто підклав свою відповідь "5 снарядів" езолангами, які легко піддаються поліглоту між собою ...>. <;
Лін

1
Тепер, якщо хтось може поліглотувати ці мови з D , я назавжди буду в захваті. ( #defineце не річ у D ... що дуже заважає поліглотінгу). Також мені дуже потрібно вивчити пробіл.
Zacharý

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

Чому ні <?='مرحبا بالعالم!';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!
FissionHello World!

Спробуйте в Інтернеті! (Кардинал)


2
Я бачу тут великий потенціал, оскільки //це коментарі на багатьох мовах.
Zacharý

@ Zacharý Це єдина причина, що більшість з них є там. Зараз два використовуються для> <> та одного для бджолиного воску. Ті, що в перших двох стовпцях, нічого не роблять.
KSmarts

Чи можете ви пояснити потік контролю для бджолиного воску? Я хочу побачити, чи підходить він для цього виклику .
Картопля44

@ Potato44 Це дводенна мова, яка інтерпретує код як обмежену шестикутну сітку, тому вказівники можуть рухатись у 6 напрямках. Бджоли (покажчики) породжуються символами */\_і можуть бути перенаправлені у фіксованих напрямках або за допомогою дзеркал чи обертання. Дивіться тут докладніше.
KSmarts

Ви можете вирізати його на 1 байт, тому що для частини бджолиного воску ;після другого підключення не потрібно. Бджола просто біжить з соти вправо.
ML ML

7

2 мови, 16 символів, 24 байти

Ну, принаймні, це коротше обох рядків.

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

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

Допоможіть, WarDoq! -Hello World!

Допоможіть, WarDoq! можна додати два числа та перевірити прайси, тому він вважається дійсною мовою програмування для цього мета-повідомлення .


IIRC, вони не один байт в 05AB1E, це лише через обмеження TIO. \
Zacharý

@ Zacharý ви впевнені? Я знаю, що символи івриту в деяких кодуваннях становлять 1 байт. Можливо, перекриваються чар-коди.
Уріель

Ви бачите тут іврит ?
Zacharý

@ 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: Спробуйте в Інтернеті!

Сомме: Спробуйте в Інтернеті!

Пояснення

Додати ++

Додати ++ побачень:

x:Helo Byd!
O

" xРядок виводу "

y:"Hai dunia!"

"Встановити y інший рядок"

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

"idk щось дивне, я помиляюся"

Foo

Фу бачить:

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

"О, цитати, я видам їх".

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

"Е-е ... щось про режим? Idk, я помилюся."

Сомме

Сомме бачить, ну, це:

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

Кожен стовпець перетворюється в кодові точки, потім від них віднімається 32, потім кожен береться за модулем 95. Це відповідає цим символам, які друкують: "Хей Верден!"


Що ж, тиждень настав, і ти найкоротший (і єдиний) конкуруючий відповідь, тож вітаємо з щедротою!
caird coinheringaahing

@cairdcoinheringaahing Дякую! : D
Conor O'Brien

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; перекладено з відповіді Захарі


4 мови (Протон, Py1, Py2, Py3). Натхненний відповіддю Захарі .
Містер 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!- ТІО

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!")));
Джолліватт

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

Java дає "Салют Лам!" Спробуй це!

SILOS надає "Hola Mundo" Спробуйте!

Brainfuck дає "Ciao mondo!" Спробуй це!

(Код альфука модифікований зі сторінки Esolangs на Альфуку )

Альфук дає "Привіт, світ!" Спробуй це!

Початковий рядок \ u000A - це код Java. Код першого рядка - це код Альфука, який ігнорує решту коду (доки "p" і "s" будуть врівноважені. Відповідним рядком для SIL / SILOS є "print Hola Mundo", а brainfuck код) знаходиться в кінці і проігнорує решту коду.


1
Я думаю, ви можете пограти в BF-код, використовуючи константи, надані на цій сторінці, і використовувані там методи.
cole

@cole Я намагаюся ще раз поглянути на bf-код, коли отримаю ще трохи часу для його оптимізації. По суті, я не думаю, що достатньо просто використовувати константи, мені доведеться визначити відношення рецидиву
Rohan Jhunjhunwala

1
78 для 'Ciao mondo!': +>++>+>+++[+++++[>+++++++++++>++++<<-]+++<]>>--.>+.>.>-.>.<--.++.-.<+++.>+.>+.Використання послідовності байтів [69, 104, 97, 112, 32]
прим

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;у С, але дорівнюєdouble i=0.5; C ++.

Спробуйте в Інтернеті! (як 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!";

Спробуйте в Інтернеті!


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!

Scratch 2.0: Hello world!

Бета-версія Scratch 3.0 станом на час цієї відповіді: Hai dunia!

Пояснення

У Scratch 1.4 додавання булевого списку до списку додає 1або 0, але в 2.0 і вище додає trueабо false, але при перевірці, чи елемент дорівнює 1<[] = []>, воно повернеться істинним, якщо елемент 1абоtrue , тому ми додаємо до нього ще один лист і перевіряємо це.

У Scratch 3.0 списки мають максимальний розмір 200 000 предметів, тому ми просто додаємо купу елементів і дивимося, чи такий список такий довгий.


1

3 мови, 61 байт

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

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

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

Foo виходиHelo Byd!

Тільки тому, що я встановив щедрість, не означає, що я не можу брати участь: D (ab) використовує блискучий фокус із встановленням струн, який знайшов Conor для 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!"яких, як і в лапках, виводиться.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.