다국어 안녕하세요 세계


72

태스크

여러 프로그래밍 언어로 유효한 프로그램이나 함수를 만들고 다른 언어 출력으로 컴파일 / 해석 할 때 "Hello, World!" 다른 자연 언어로.

예를 들어, 유효한 솔루션은 Hello World!컴파일되고 C로 실행될 때 (영어), 컴파일되고 Hallo Welt!C ++로 실행될 때 (독일어) 你好世界!, 파이썬으로 실행될 때 (중국어)를 출력 할 수 있습니다.

규칙

답변의 유효성에 대한 모호성을 피하기 위해 다음은 여러 언어로 된 문구의 허용 버전 목록입니다. 이 목록은 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!"는 "Bongu!"로 번역됩니다). 이것들은 제외되었습니다. 또한 일부 언어 (아랍어, 히브리어, 파슈토어, 페르시아어 및 이디시어)는 Google 번역에서 오른쪽에서 왼쪽으로 읽지 만 여기에서 복사하면 왼쪽에서 오른쪽으로 읽습니다. 나는 그것이 괜찮기를 바랍니다.


사용 된 프로그래밍 언어에서 사용하지 않는 바이트를 계산하는 일관된 방법을 사용할 수 있습니까?
Zacharý

@ Zacharý 대답에 사용 된 모든 문자를 나타내는 단일 인코딩을 사용하여 바이트 수를 계산할 수 있습니다. 아니면 모든 대답에 대해 바이트 수를 UTF-8로 계산해야합니까?
Steadybox

1
다른 언어와 다른 인코딩을 사용하는 언어가있는 경우 코드를 해당 언어의 코드 페이지로 변환하거나 동일한 바이트 표현을 사용해야합니까? (일부 바이트는 잘못된 UTF-8을 초래하기 때문에 어렵습니다)
NieDzejkob

2
@NieDzejkob polyglot에 대한 규칙은 측정 가능한 바이트 크기를 가진 하나의 파일이 있으며 여러 인터프리터 / 컴파일러가 실행할 수 있다고 생각합니다. ( )
user202729

4
중국어와 일본어의 느낌표 ( , U + FF01)는 다른 느낌표 ( !, U + 0021)와 다릅니다 .
alephalpha

답변:


32

23 개의 펀드, 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 바이너리를 실행할 수 없거나 소스에서 빌드하지만 모든 사람이 온라인 통역사를 테스트 할 수 있어야합니다).

온라인 통역사

설치가 필요하지 않습니다. 일반적으로 코드를 붙여 넣고 버튼을 클릭하면됩니다. 그러나 이들 중 일부는 매우 느리기 때문에 실행을 마치려면 시간이 필요할 수 있습니다.

알렉시오 스의 놀이 놀이터 - 살라 무 두 니아!

Clear...버튼을 클릭하고 코드를 입력 필드에 붙여 넣습니다. Edit스위치를 전환하여 인터프리터를 활성화 한 다음 Run버튼을 클릭하여 실행을 시작합니다.
이 사이트는 Chrome 이외의 브라우저에서는 작동하지 않을 수 있습니다.

베 풍기 우스 - 몰로 리즈 웨!

코드를 입력 필드에 붙여넣고 기존 코드를 덮어 씁니다. 그런 다음 Run버튼을 클릭하여 실행하십시오.

데이비드 Klick의 비 펀지 93 통역 - Sannu Duniya!

코드를 Playfield 입력 필드에 붙여 넣은 다음 Run버튼을 클릭하여 실행을 시작 하십시오 .

이안 오스 굿의 비 펀지-93 통역 - 건배 LUME!

Show버튼 아래의 입력 필드에 코드를 붙여넣고 이미있는 코드 를 덮어 씁니다 @. Show버튼을 클릭하여 코드를 가져온 다음 Run버튼을 클릭하여 실행을 시작 하십시오 .

jsFunge IDE - Hej Verden!

먼저 도움말 대화 상자를 닫은 다음 열기 / 가져 오기 도구 모음 단추 (왼쪽에서 두 번째)를 클릭하고 코드를 붙여 넣은 다음을 클릭 하십시오 OK. 실행하려면 실행 모드 단추 (왼쪽에서 네 번째)를 클릭 한 다음 시작 (왼쪽에서 다섯 번째)을 클릭하십시오.

또한 콘솔 기반 인터프리터 중 일부는 실제로 TIO에서 사용할 수 있으므로 기술적으로 온라인 인터프리터는 아니지만 온라인으로 테스트 할 수 있습니다. 지원되는 사람들 (현재 BEF, FBBI, MTFI 및 PyFunge)을 위해 온라인 으로 사용해보십시오! 항목 옆에 링크.

자바 IDE

이를 위해 Java 런타임을 설치해야하지만 이론적으로 모든 플랫폼에서 작동해야합니다. 그래도 Windows에서만 테스트되었습니다.

애슐리 밀스 '비주얼 비 펀지 애플릿 - Moien 채찍 자국!

처음에는 온라인 애플릿으로 불행히도 더 이상 사용할 수 없지만 jar 파일을 다운로드하여 데스크톱 응용 프로그램으로 로컬에서 실행할 수 있습니다. 코드를 프로그램 편집기 창 에 붙여 넣은 다음 Convert버튼 을 클릭 한 다음 버튼 을 클릭 해야 Run합니다.

WASABI : 와사비의 훌륭한 Asinine Befunge 통역사 - 안녕 Welt!

코드를 붙여 넣으려면 편집기 창의 왼쪽 상단 모서리를 마우스 오른쪽 버튼으로 클릭하고 (왼쪽 상단 이어야 함) 붙여 넣기 메뉴 항목을 선택하십시오 . 그런 다음 최대 속도 확인란을 활성화하고 (그렇지 않으면 시간이 오래 걸립니다) Run!버튼을 클릭하여 실행을 시작 하십시오 .

YABI93 : 또 다른 Befunge93 통역 - 헤일로 니아!

Ctrl+ A, Ctrl+ V를 눌러 코드를 편집기 창에 붙여넣고 기본 소스를 덮어 씁니다. 그런 다음 Start버튼을 클릭하여 실행을 시작 하십시오 .

Windows IDE

경우에 따라 다른 운영 체제에서 사용 가능한 이진 파일이있을 수 있지만 일반적으로 이러한 파일에는 Windows가 필요합니다. 그래도 코드가 다른 플랫폼에서 작동한다고 약속 할 수는 없습니다.

BefunExec - Hello World!

코드를 편집기에 붙여 넣을 수 없으므로 먼저 코드를 디스크에 저장해야합니다. 그런 다음 IDE에서 File> Open 메뉴를 사용하여 디스크에서 코드를로드하고 Simulation> Run / Pause 메뉴를 선택하여 실행하십시오.

BeQunge - Labas 파사 울리!

Ctrl+ V를 눌러 코드를 붙여 넣은 다음 디버그 도구 모음 단추 (파란색 톱니 모양)를 클릭하여 실행을 시작합니다. 디버거 패널이 표시 되면 슬라이더 오른쪽에있는 버튼 인 속도 를 최대 로 설정 해야합니다. 그렇지 않으면 완료하는 데 시간이 오래 걸립니다.

곰팡이 - 테레의 maailm!

Ctrl+ V를 눌러 코드를 붙여 넣은 다음을 눌러 F5실행합니다.

Visbef : Windows 용 비주얼 비 펀지 '93 - 안녕하세요 Wereld!

코드를 편집기에 붙여 넣을 수 없으므로 먼저 코드를 디스크에 저장해야합니다. 그런 다음 IDE에서 Ctrl+ O를 눌러 파일 브라우저를 열고 디스크에서 코드를로드 한 다음를 눌러 F5실행하십시오.

Windows 콘솔 앱

다른 플랫폼도 사용 가능하지만 작동하지 않을 수도 있지만 일반적으로 Windows가 필요합니다.

모든 경우에 코드는 디스크의 파일에 저장되어야하고 파일 이름은 인터프리터에 명령 줄 매개 변수 ( 아래 예제 명령 줄의 source.bf) 로 전달되어야합니다 . 또한 이들 중 일부는 기술적으로 Befunge-98 인터프리터이며 Befunge-93 호환성 모드를 강제 실행하려면 특정 명령 줄 옵션으로 실행해야합니다. 그렇게하지 않으면 올바른 결과를 얻을 수 없습니다.

BEFI : Rugxulo의 비 펀지-93 통역 - 헤이 Verden!

명령 줄 : bef93w32 -q source.bf

CCBI : 적격 동시 비 펀지-98 통역 - Sveika의 pasaule!

명령 줄 : ccbi --befunge93 source.bf

MTFI : 동방의 세 박사의 단수형 테크니카 Funge 통역 - 하이 니아!

명령 행 : mtfi -3 source.bf( 온라인으로 사용해보십시오! )

파이썬과 PHP 콘솔 앱

여기에는 Python 또는 PHP와 같은 적절한 스크립팅 언어가 설치되어 있어야합니다.

Befungee - Helo Byd!

명령 줄 : befungee.py source.bf

PyFunge - 헤일로 Dunya!

명령 행 : pyfunge -v 93 source.bf( 온라인으로 사용해보십시오! )

베풍 - 봉쥬르 몽드!

명령 줄 : php bephunge.phps source.bf

소스 전용 콘솔 앱

이것들은 소스로부터 빌드 될 필요가 있으며, 일반적으로 * nix와 같은 환경에서 가장 쉽습니다. Windows 에서는 Linux 용 Windows 하위 시스템을 사용합니다 .

BEF : 비 펀지-93 참조 배포 - 챠오의 몬도!

명령 행 : bef -q source.bf( 온라인으로 사용해보십시오! )

cfunge - Sawubona Mhlaba!

명령 줄 : cfunge -s 93 source.bf

FBBI : Flaming Bovine Befunge-98 Intepreter - Hei maailma!

명령 행 : fbbi -93 source.bf( 온라인으로 사용해보십시오! )

버섯 - Kaixo Mundua!

명령 줄 : fungi source.bf

RC / Funge - 98 - 살롬 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 가지가 있지만 여기에는 3 가지 조합 만 있습니다.

이러한 각 시퀀스는 단일 숫자를 반환했으며이 4 개의 숫자 (기본 산술 및 변환 테이블을 통해)를 결합하여 0에서 22 범위의 최종 값을 생성했습니다. 그런 다음이 값을 실제 메시지를 조회하는 인덱스로 사용할 수 있습니다. 표시합니다.


꽤 찍소리 방법이지만, 내가 이길 방법은 없습니다. 이제 이것을 조정하고 BrainFuck 변형을 짜낼 수 있습니다.
Zacharý

10
나는 당신이 상상하는 것처럼 쉽지 않다는 것을 확신합니다. 20 개 이상의 버그가있는 인터프리터에서 충돌없이 코드가 실행되도록하는 것은 어려운 일입니다. 저렴하고 싶었다면 Befunge-98을 사용하고 구현 핸드 프린트 ( 3y) 를 쿼리했을 것 입니다.
James Holderness

2
나는 당신이 어떻게 단지 돈을 쓰는지 에 관해서 싼 것을 언급하고 있지만, 이것은 실제로 매우 인상적입니다.
Zacharý

이것은 엄청나게 인상적이지만 왜 다른 통역사가 다르게 취급하는지 설명 할 수 있습니까? 아마도 23 개 버전 모두가 아니라 적어도 당신이 악용하고있는 행동 차이의 몇 가지 예가 있습니까?
잭 Brounstein

1
@ JackBrounstein 나는 대답의 끝에 약간의 설명을 추가했습니다.
James Holderness

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 = 헤일로 두 니아! (인도네시아 인)

  • 파이썬 2 = Hej Verden! (덴마크 말)

  • 파이썬 1 = 하이 두 니아! (말레이 사람)

  • C (gcc) = 헬로 비드! (웨일스 말)

  • C ++ (gcc) = 헤일로 던야! (순 다네)

  • 목표 C (클랑) = 안녕 웰트! (독일 사람)

  • Brainfuck = 안녕하세요 세계! (분명히 영어)

  • Befunge-93 = Salut Lume! (루마니아 사람)

  • 루비 = Moien Welt! (룩셈부르크 어)

  • 배쉬 = Salom Dunyo! (우즈벡)

  • Befunge-98 (PyFunge) = Kaixo Mundua! (바스크 사람)

  • Unefunge-98 (PyFunge) = Sannu Duniya! (하우사)

  • 추기경 = 안녕하세요 Wereld! (네덜란드 사람)

  • Alphuck = Ciao 몬도! (이탈리아 사람)

  • > <> = Moni Dziko Lapansi! (치체와)

  • 핵분열 = Pozdrav svijete! (크로아티아)

모든 골프 팁을 환영합니다 (특히 Brainfuck)!

-1 바이트를위한 @JonathanFrech에게 감사합니다! 또한 -40 바이트의 @ovs 덕분에!

어떻게 (일반적인 아이디어, 실제로 세부 사항을 잊어 버렸습니다) ??

언어는 네 그룹으로 나눌 수 있습니다 :

  • 매크로 : C, C ++, 목표 C
  • 댓글 : Python3, Python2, Python1, Ruby, Bash
  • 차원 : Befunge-93, Befunge-98, Unefunge-98, 추기경,> <>, 핵분열
  • Vulgar : Brainfuck, Alphuck

매크로 언어 #는 전 처리기 지시문의 시작으로 간주됩니다. 이것들은 세 가지 이유로 사용됩니다 : 다른 그룹을위한 코드를 저장하고, 매크로 언어를 구별하고, 실제로 매크로를 정의해야합니다. 세 가지 모두 //주석으로 사용 되므로 그 후에 다른 그룹의 코드를 저장합니다. 또한 백 슬래시는 이러한 언어로 주석을 계속합니다.

주석 언어 #는 주석의 시작으로 간주됩니다. 여기서 기발한 점은 트리플 따옴표로, 파이썬과 Ruby를 Bash와 구별합니다. 그리고 파이썬 1과 2를 3에서 구별하기 위해 출력 배열과 함께 세 가지 모두에서 구별되는 기능을 사용합니다. 아, 그래요 __END__. 주석 언어 중 일부 (정확히 어떤 언어를 기억할 수 없는지)에 대한 코드를 종료하는 데 사용됩니다.

차원 언어는 설명하기 어려운 방식으로 구별됩니다. 언어를 이해하려면 각 언어의 특성을 알아야합니다. 예를 들어 #펑 게이드에서는 건너 뛰기 만하는 반면 다른 언어에서는 다양한 다른 작업을 수행합니다. 코드는 이러한 언어의 모든 곳에서 사용됩니다.

마지막으로 Vulgar 언어에 도달합니다. 이 두 문자는 유효한 문자 세트에없는 모든 것을 무시합니다. 코드에는 이미 문자 세트의 문자가 포함되어 있으므로 이러한 언어 및 다른 언어와의 균형 조정 작업을 수행해야합니다.


파이썬 제출의 문자열을 하나의 큰 문자열로 결합하고 문자열 슬라이싱을 사용하여 색인을 생성 할 수 있습니까? 예 "abcabcabc"[n::3] -> "aaa" for n = 0, "bbb" for n = 1. 어떻게 든 슬라이싱에 중복 문자를 포함시켜 슬라이스하고 바이트를 절약 할 수있는 방법이 있다고 생각합니다 (H 및!).
cole

2
시원한! 괄호 안의 괄호 ["Hai dunia!","Hej Verden!","Halo Dunia!"]는 쉼표 를 보호합니다!
Uriel

3
그들은 필요하지 않을 것입니다 .TIO brainfuck이 사용자의 입력이 부족하면 기본값 0을 (또는 아무것도 말할 수 없습니다) 사실을 남용합니다. 있다 (9 개) 이 사실을 악용 다른 차폐 쉼표.
Zacharý

2
+[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.BF 파트에를 사용하지 않는 이유가 있습니까? ( 소스 )
Esolanging 과일

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! 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! bash에서
  9. Ndewo Ụwa! ksh에서
  10. Ciao mondo! 대시
  11. Moien Welt! zsh에서
  12. Hei Verden! 재에서
  13. Olá Mundo! 추기경
  14. Hello World!primo 에 의해 brainfuck에서 .
  15. Helo Byd! 공백으로

설명

1 행은 5 개의 2D esolang을 구분합니다.

  1. ><>#거울로 읽히고 왼쪽으로 감싸서 인쇄 "Hai dunia!"하고 충돌합니다 ( @). 모든 곰팡이는 그것을 트램폴린으로 읽고 올바르게 가십시오.
  2. Befunge-93은을 무시 ;하고 인쇄 Kaixo Mundua!하고 종료합니다 ( @).
  3. '98 Funges는 첫 번째 ;에서 두 번째로, 세 번째 ;에서 네 번째 로 점프 합니다. wBefunge-98의 인쇄용 NOP입니다 Hei maailma!.
  4. 그러나 wUnefunge-98의 명령 포인터를 반영하여 인쇄 Tere maailm!합니다.
  5. 왼쪽 상단에서 핵분열이 시작되지 않습니다. R"Hej Verden!";실행됩니다. (다른 명령 포인터는에서 시작 D에서 __END__,하지만 아무 것도하지 않습니다받는 사망 ;true;).

루비는 `true #{puts'Hola món!'}`그때 본다 __END__.

GolfScript는 `을 본 다음 true(NOP), 주석을 봅니다 . 그런 다음 __END__(NOP); 그런 다음 "Hola Mundo!" puts(이것이 실행됩니다); 그런 다음 case(NOP), `(빈 스택에 충돌).

껍질이 코멘트에 다음 호출을 참조 true, 알 수없는 명령에 대한 다음 호출 (NOP을) __END__"Hola Mundo!"(계속 STDERR하지만 실행에있는 오류), 다음 case현재 프로세스의 이름의 첫 글자에 따라 구별하고 문.

카디널은에서 시작하여 %4 개의 IP를 위, 아래, 왼쪽 및 오른쪽으로 보내는 또 다른 2D esolang입니다 . 그것들은 모두 주변 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문자 를 추가 하면 핵분열 프로그램이 깨지는 것을 잊어 버렸습니다 . 그래서 이것을 피하기 위해 문자열을 변경했습니다.


1
곧 드리겠습니다.
Zacharý

1
내가 항복 한 것 같아, 당신은 놀라운 일을 했어.
Zacharý

귀하의 솔루션에 훨씬 더 흥미로운 방식으로 상호 작용하는 언어가 있기 때문에 조금 나쁩니다! 나는 단지“5 쉘”답변을 esolang으로 채워서 서로 폴리 글로 팅하기 쉽습니다…>. <;
Lynn

1
이제 누군가가이 언어를 D 로 폴리 글로 팅 할 수 있다면 , 나는 영원히 경외 될 것입니다. ( #defineD에서는 폴리 글로 팅을 많이 방해하지 않습니다.) 또한 공백을 배워야합니다.
Zacharý

1
오, 이제 대문자가 더 있습니다. 다른 Hello Worlds를 선택하여 조금 수정하겠습니다.
Lynn


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 ... ?>)
Ismael Miguel

@IsmaelMiguel 그 기능을 잊어 버렸기 때문에 ... 간단합니다
NieDzejkob

9

5 개 언어, 168 바이트

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

저는 2 차원 언어가 흥미 롭다고 생각합니다.

> <> 인쇄물 Tere maailm!
Befunge-98 인쇄물 Hej Verden!
Beeswax 인쇄물 Sawubona Mhlaba!
Cardinal 인쇄물 Helo Byd!
Fission 인쇄물Hello World!

온라인으로 사용해보십시오! (추기경)


2
//많은 언어로 된 의견이 있기 때문에 여기에 큰 잠재력 이 있습니다.
Zacharý

@ Zacharý 그것이 그들 대부분이 유일한 이유입니다. 현재는> <>에 2 개, 밀랍에 1 개가 사용되었습니다. 처음 두 열에있는 것은 아무 것도하지 않습니다.
KSmarts

밀랍의 제어 흐름을 설명 할 수 있습니까? 이 과제에 적합한 지 확인하고 싶습니다 .
감자 44

@ Potato44 코드를 6 각형 격자로 해석하는 2 차원 언어이므로 포인터가 6 방향으로 이동할 수 있습니다. 꿀벌 (포인터)은 캐릭터에 의해 생성되며 */\_고정 된 방향으로 또는 거울이나 회전에 의해 방향을 바꿀 수 있습니다. 자세한 내용은 여기 를 참조 하십시오 .
KSmarts

밀랍 부분의 ;경우 두 번째 백틱 이후가 필요하지 않기 때문에 1 바이트로자를 수 있습니다 . 꿀벌은 벌집을 오른쪽으로 향하게합니다.
ML

7

2 개 언어, 16 자, 24 바이트

글쎄, 적어도 두 줄보다 짧습니다.

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

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

도와주세요! -Hello World!

도와주세요! 는 두 개의 숫자를 더하고 소수를 테스트 할 수 있으므로이 메타 포스트 마다 유효한 프로그래밍 언어로 간주됩니다 .


IIRC는 05AB1E에서 1 바이트가 아니며 TIO의 한계 때문입니다. \
Zacharý

@ Zacharý 확실합니까? 일부 인코딩에서는 히브리어 문자가 1 바이트임을 알고 있습니다. 문자 코드가 겹칠 수 있습니다.
Uriel

여기에 히브리어가 보 입니까?
Zacharý

@ Zacharý fixed (24 바이트를 만들 것이라고 생각합니다)
Uriel

6

3 개 언어, 67 62 바이트

현상금 을 받으려면 (100 명)

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

++ 추가 : 온라인으로 사용해보십시오!

Foo : 온라인으로 해보십시오!

Somme : 온라인으로 사용해보십시오!

설명

추가 ++

추가 + +를 본다 :

x:Helo Byd!
O

"출력 x문자열

y:"Hai dunia!"

"y를 다른 문자열로 설정"

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

"이상한 일이 있는데 오류가 나겠어"

푸는 본다 :

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

"아, 따옴표, 출력하겠습니다."

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

"어 ... 모드에 관한 것? Idk, 오류가 발생합니다."

Somme는 다음과 같이 봅니다.

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

모든 열은 코드 포인트로 변환 된 다음 32에서 빼고 모듈로 95를 가져옵니다. 이는 "Hei Verden!"이라고 인쇄 된 문자에 해당합니다.


글쎄, 일주일이 지났고 당신은 가장 짧은 (그리고 유일한) 경쟁 답변이므로 현상금을 축하합니다!
caird coinheringaahing

트윗 담아 가기 : 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, 양성자; Xcoder 씨에게 감사합니다. Zacharý 님의 답변에서 번역


4 개 언어 (Proton, Py1, Py2, Py3). Zacharý의 답변에서 영감을 얻었습니다 .
Mr. 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!")));

펄 5는 제공 Hallo Wereld!- TIO를

루비는 제공 Hello World!- TIO를

파이썬 2 제공 Hej Verden!- TIO를

파이썬 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

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

자바는 "Salut Lume!" 시도 해봐!

SILOS는 "Hola Mundo"를 제공 합니다. 사용해보십시오!

Brainfuck는 "Ciao mondo!" 시도 해봐!

합니다 (alphuck 코드에 Esolangs 페이지에서 수정 Alphuck )

Alphuck은 "Hello World!" 시도 해봐!

\ u000A로 시작하는 줄은 Java 코드입니다. 첫 번째 줄의 코드는 Alphuck 코드이며 나머지 코드는 "p"와 "s"가 균형을 유지하는 한 무시합니다. SIL / SILOS의 관련 줄은 "Hola Mundo 인쇄"와 brainfuck 코드입니다. 은 끝에 있으며 나머지 코드는 무시합니다.


1
페이지에서 제공하는 상수 와 거기에 사용 된 기술을 사용 하여 BF 코드를 골프화 할 수 있다고 생각합니다 .
cole

@cole 나는 그것을 최적화 할 시간이 더있을 때 bf 코드를 다시 보려고합니다. 본질적으로 상수를 사용하는 것만으로는 충분하지 않다고 생각합니다. 재발 관계를 정의해야합니다
Rohan Jhunjhunwala

1
'Ciao mondo!'78 : +>++>+>+++[+++++[>+++++++++++>++++<<-]+++<]>>--.>+.>.>-.>.<--.++.-.<+++.>+.>+.바이트 시퀀스 사용 [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로)

온라인으로 사용해보십시오! (C ++로)

파이썬 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 개 언어, 184181 바이트

한 번만 작동합니다. 다시 실행하려면 목록을 지워야합니다.

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 개이므로 여러 항목을 추가하고 목록이 긴지 확인합니다.


1

3 개 언어, 61 바이트

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

++ 출력 추가Hai dunia!

젤리 출력Hello World!

출력Helo Byd!

내가 설정해서 현상금 내가 일부받을 수 없어 의미하지 않는다 : D (AB)하는 화려한 캐릭터 설정 트릭을 사용하는 코너가 발견 추가를 위해를 ++

작동 원리

추가 ++

;“,ḷṅḳȦ»Ḋḷ“     ; 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 코드가 무시되는 방식 인 구문으로 구성 할 수 있습니다 . 실제로 젤리에 의해 실행되는 코드는

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

Foo는 "Helo Byd!"따옴표를 제외하고 출력되는 모든 문자를 무시합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.