다국어 도전


13

결국 우리가 수개 국어로 했어 재미가 (에 도전 최근 어떻게 출력이 두 언어에있을 수있는 문제에 대해) 과거?

답은 부울 입력을 승인 b하고 텍스트 "true"또는을 출력해야합니다 "false". 동일한 코드가 다른 언어로 실행 출력에 필요 "waar"하거나 "onwaar"또는 다른 번역 truefalse.

입력

  • 입력은 명확하게 구별되는 진실 / 거짓입니다. 실제 값 T / F, 비트, int 또는 (빈) 문자열이 허용됩니다.
  • 제출물의 모든 부분에 대해 입력이 동일해야합니다.

산출

  • 출력은 STDOUT팝업 창, 3D 인쇄 및 메일 등으로 작성된 함수에 의해 반환 될 수 있습니다 .

  • 출력은의 상태를 나타내야합니다 b. 따라서 'truthy'는 'true', 'waar'... 및 'falsey'를 출력해야합니다. 'false', 'onwaar'등으로 이어져야합니다.

  • 다른 언어는 다른 출력 방법을 사용할 수 있습니다.

사용되는 언어

  • 출력 중 하나는 "true"and 이어야 "false"합니다.

  • 프로그래밍 언어의 다른 버전은이 과제에 대해 다른 언어로 계산됩니다.

  • 인간 언어의 다른 방언은이 과제에 대해 다른 언어로 계산됩니다.

  • 폴리 글롯을 두 개 이상의 프로그래밍 언어로 확장 할 수 있습니다. 모든 프로그래밍 언어는 고유 한 인간 언어를 출력해야합니다.

가장 많은 언어가 통합 된 답변이 승자로 선언됩니다. 묶인 경우 바이트 수를 고려합니다.


프로그램이 인터폰 / 컴파일러의 버전을 실행할 수 있는지 의도적입니까?
CodenameLambda

1
인가 "True""False"의 장소에서 허용해야 "true"하고 "false"?
Jonathan Allan

1
@JonathanAllan 나의 나쁜. 예, 출력에 좋습니다.
steenbergh

3
출력이 3D로 인쇄되어 다시 우편으로 보내지는 esolang을보고 싶습니다.
ETHproductions

2
이것은 인기 콘테스트에 비해 너무 광범위합니다. X의 독창적 인 팝 단점이 범위를 벗어 났습니까?
Dennis

답변:


5

Dyalog APL , 243 237 바이트 : 14 개 언어, 131 확장 *

Soaku 덕분에 -6 바이트 .

⎕IO←0많은 시스템에서 기본값이 필요합니다 . 0또는의 입력을 요구하는 프롬프트 1.

((⎕AV'ëáàÆÅÄòðÓÈÇ')⍳⍎⎕D∩⍨41⊃#⎕WG'APLVersion')⊃⎕⊃s¨⌽(s←{1↓¨⍵⊂⍨⍵=⊃⍵})';,true,adevarat,haqiqiy,otito,tunay,bener,prawda,dogru,vrai,that,wahr,vero,verdade,cierto;,false,fals,yolg''on,eke,mali,palsu,falsz,yanlis,faux,sai,falsch',18',falso'

버전 (9.0-16.0, 부 버전)에 따라 분음 부호는 없지만 영어, 스페인어, 포르투갈어, 독일어, 베트남어, 프랑스어, 터키어, 이탈리아어, 폴란드어, 순 다어, 필리핀어, 요 루바 어, 우즈벡어 또는 루마니아어로 출력됩니다.

⎕AV⍳'ëáàÆÅÄòðÓÈÇ'A tomic V ector 의 인덱스 ( 15114214113313213212212111110210196 )

((... )⍳... )의 위치를 ​​찾으십시오

평가

⎕D∩⍨교차 D의 igits 및

4↑ 네 개의 첫 문자

1⊃ 두 번째 요소

#⎕WG'APLVersion' 버전 번호

(... )⊃그것을 사용하여 선택하십시오

⎕⊃ input'th (0 : first; 1 : second) 요소

기능 (우리가 곧 정의되는)의 각각에 적용

의 반대

(s←{... }) s의 인가 - 여기서, S는 로서 정의된다

1↓¨ 첫 번째 캐릭터는 각각에서 떨어졌다

⍵⊂⍨ 인수가 분할 된 곳

⍵= 인수의 문자는

⊃⍵ 논쟁의 첫 인물

';,true,adevarat,... ,falsch',이 문자열 앞에

18⍴',falso' 해당 문자열에서 주기적으로 가져온 18 개의 문자

* 버전 12.1부터 버전 번호에 빌드 번호가 포함되어 있으므로이 문자열에서 가져온 문자 수를 늘리면 131 개의 라틴 스크립트 언어를 모두 쉽게 처리 할 수 있습니다 .


아주 좋은 답변입니다! 그리고 확장성에 대한 훌륭한 증거.
steenbergh

243 바이트를 셉니다.
Conor O'Brien

@ ConorO'Brien 고정. 감사.
Adám

나는 늦게 알아,하지만 당신은 대체하여 몇 바이트를 저장할 수 prawdziwyprawdafalszywyfalsz. 짧은 양식은 여기에 더 적합하고 더 나은 점수를 제공합니다.
RedClover

13

6 개 언어, 169 바이트

예상 0\n또는 1\n입력으로 단어를 다음과 같이 인쇄합니다.

  • 파이썬 2 (네덜란드어 vals/waar),
  • 파이썬 3 (프랑스어 faux/vrai),
  • 루비 (영어 false/true),
  • CJam (노르웨이어 usant/sant),
  • Golfscript (덴마크어 usand/sand),
  • Befunge-93 (이탈리아어 falso/vero).

"#{puts gets>?1;exit}"" "#"& 1v
""
print('vwfvaaarlauasrxi'[int(1/2*4+int(input()))::4])
""#";;;;ri"u">"sant"+o
""""
__END__
]0=~"u">"sand"""#@,,,,"vero"  _"oslaf",,,,,@

1
덴마크어로 거짓이다 falsk .
Adám

나는 그 print진술에 대해 두 개의 찬성 투표를하겠다 !
steenbergh

10

모든 펑지, 6 개 언어, 146 바이트

💥 이제 3D로! 💥

A vv"faux"0"vrai"mv#<v&#;9*j"kslaf"6j"etke">:#,_@;
; >"otreic"0"oslaf"v^<
&^>"murev"0"muslaf">
&^&<"false"0"true"<
>_>:#,_@
^_^

명확성을 위해 두 코드 평면을 분리하여 계층화 방법을 확인할 수 있습니다. 디스크에서이 두 블록은 위 줄 끝에서 용지 공급 문자로 분리됩니다.

   h"vals"0"waar"<

규칙에 따라 여러 언어 버전이 별도의 언어로 계산되므로이 버전은 Funge / Befunge의 6 가지 버전입니다. :)

Dennis 덕분에 이제 모든 Befunge 버전을 TIO 에서 온라인으로 테스트 할 수 있습니다 . 그러나 Unefunge 및 Trefunge 변형은 현재 구현되어 있지 않으므로 Rc / Funge 권장 합니다.

ABefunge 93 및 96에서는 무시되지만 97 에서는 About Face 명령이며 98에서는 지원되지 않으므로 반영됩니다. 이것은 93과 96이 v아래쪽을 따라가는 반면 97과 98은 운동장의 반대쪽으로 감싸는 것을 의미합니다 .

Befunge 96 ;에서 줄 시작 부분에 공백이 있으면 주석으로 표시되므로 줄을 건너 뛰고 인터프리터 >는 세 번째 줄에서 계속합니다 . 그러나 93에서 통역사 >는 두 번째 줄을 따릅니다 .

97/98 경로는 첫 번째 줄에서 오른쪽에서 왼쪽으로 계속 진행되어 ;주석 마커 내부의 섹션을 건너 뛰고 &명령을 연결하여 결국 U- 벤드 시퀀스에 도달합니다 v<^<. Unefunge에서 이러한 방향 변경은 지원되지 않으므로 인터프리터는 방향을 반대로 바꾸고 주석에서 이전에 건너 뛴 섹션을 실행합니다. Befunge / Trefunge에서는 왼쪽으로 계속 진행됩니다.

Befunge 97에서는 m명령이 지원되지 않으므로 건너 뛰므로 인터프리터는 첫 번째 줄을 따라 계속됩니다. 98에서는 3D 전용이므로 Befunge (2D)에 반영되며 통역사 v는 오른쪽에서 네 번째 줄까지 따라갑니다. Trefunge (3D) 에서 Z 축을 따라 두 번째 평면으로 레벨을 전송 하는 High-Low 분기입니다.

Unefunge의 경우를 제외하고, 각 버전 &은 사용자 입력을 얻기 위해 명령 중 하나에 지시되기 전에 별도의 행에서 각 문자열 쌍을 수집 합니다. 그런 다음 해당 코드 경로는 모두 ^두 번째 열의 명령을 통해 병합되어 프로그램 흐름이 플레이 필드의 상단을 통해 위로 향하게하여 다시 바닥으로 감싸집니다.

마지막으로 ^_^사용자 입력에 따라 따라야 할 경로를 결정하는 순서 가 있습니다 . 경우 0 , 우리는 출력 시퀀스 (직진 >:#,_아웃 쓰기) 거짓 문자열입니다. 경우 1 , 우리는 먼저 실행 >_스택에서 첫 번째 문자열, 따라서 출력 해제하는 진정한 문자열입니다.


설명이 도움이 될 것입니다.
user41805

1
아주 좋은 답변; 같은 언어의 모든 다른 버전을 사용하면 실제로 미묘합니다.
steenbergh

5

5 개 언어, 249 바이트

참고 : \rand \e는 문자 그대로 줄 바꿈 및 이스케이프 문자이지만, \x5b그렇지 않은 경우 Ruby는 정규식의 문자 클래스에 대해 불평합니다.

파티에 조금 늦었지만 어떤 방법으로도 승자가 아니었지만 감사 과제에 대한 폴리 글 로트 작업을 시작했으며 약간 늦었을 것이라고 생각했습니다.

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

설명

파이썬 : True/False

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

여기에서는 설정 q하도록 0//10, 우리는이 '''다른 코드의 대부분을 포함 문자열을 포함하는 배열을 저장 False하고 True그리고 모든 인덱스를 01상기 입력 할당 각각 b(되어야하는 0또는 1의미하도록 Falsy하고 Truthy) 후 의 번째 인덱스를 나타내는, 또는 .printbaFalseTrue


루비 : Vrai/Faux

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

파이썬 스크립트와 마찬가지로, 우리는 변수를 설정 q하지만, 루비이로 설정 0 / /1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord루비 등이 고장으로, 0/같은 "을 0으로 분할"다음 /"정규식 문자의 시작"으로. 이 리터럴을 사용하여 PHP 코드를 숨기고 Python을 시작할 수 '''있습니다. .to_s.ord올바른 피연산자 /가이어야 하기 때문에 추가 해야합니다 Fixnum. 이 후 우리는 함수를 정의 input()하고 변수를 True하고 False자신의 프랑스어 대응을 포함하고 마지막 문자열 시작하는 '다음 줄에 계속됩니다. 마지막으로 우리는 배열 생성 a포함 "Vrai"하고 "Faux"및 사용하여 선택 input()에드 번호 01.


펄 : Waar/Vals

'0//1;\'\'\'<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q}+q{0;True="Vrai";False="Faux";\'';sub a{<><1?Vals:Waar}'
input=prompt;print=alert;True="Vero";False="Falso"//\'#\'\'\'
a=[False,True];b=input();1'+1;print(a[b])

Perl에서 q=..=, q+...+q-...-블록은 특이한 구분 기호를 사용하여 리터럴로 인용됩니다 '...'. 위의 코드에서 이것을으로 대체했습니다 . 대부분의 코드는 리터럴 문자열에 포함되어 있지만 , 또는 보다 작은 값 을 확인 sub a하는 <><! (! 포함 )를 정의 합니다 . 은 실제로 호출의 결과에요 으로하고 인수의 하는 베어 단어를 포함하는 ArrayRef입니다 .STDIN1WaarValsprint(a[b])printsub a[b]b


자바 스크립트 : Vero/Falso

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

첫 번째 줄은 주로 분할에 의해 주석 0//1( //우리가 설정할 수 있도록 자바 스크립트에서 줄 주석이다) q0. 그들의 파이썬 이름으로 JS 함수 매핑 변수 설정과 다음 행 상품 TrueFalse이탈리아어 문자열로는, 마침내는 이탈리아 단어의 배열로 설정하고 사용 선택 루비 코드와 같은 실행 input01.


PHP : Ekte/Falsk

die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));

PHP <?...?>는 다른 모든 것 사이에서 코드를 실행하기 때문에 그대로 출력되므로 여기서 코드는 단순히 줄 바꿈 (현재 줄의 시작 부분으로 돌아 가기 위해)과 ANSI 이스케이프 시퀀스를 인쇄하여 현재의 끝을 지 웁니다. 라인 중 다음 Ekte또는 Falsk입력 문자가 (여부에 따라 0또는 1) truthy 또는 falsy이다.



3

C #, 자바, 104 바이트

골프 :

String M(Boolean b){String s=b+"";if(s=="True")return "Wahr";if(s=="False")return "Falsch";return b+"";}

언 골프 드 :

  class MultiLingualChallenge
  {
    public String M(Boolean b)
    {
      String s = b + "";
      if (s == "True")
        return "Wahr";
      if (s == "False")
        return "Falsch";
      return b + "";
    }
  }

테스트:

씨#

Console.WriteLine(new MultiLingualChallenge().M(true));
//Wahr
Console.WriteLine(new MultiLingualChallenge().M(false));
//Falsch

자바

System.out.println(new MultiLingualChallenge().M(true));
//true
System.out.println(new MultiLingualChallenge().M(false));
//false

설명:

호출 할 때 ToString()또는 toString()각각 C # 및 Java에서 부울에, C #은 자본의 첫 글자와 캐릭터를 인쇄 True하고 False있지만, 자바는 소문자로 모두를 인쇄 true하고 false.

Console.WriteLine(true+"");
//True

System.out.println(true+"");
//true

2

2 개 언어, 60 바이트

print('onwaar'[2*int(input()):]);1#¶ị“¡ẈẆ“⁸1»

언어는 다음과 같습니다.

  • 젤리 true false
  • 파이썬 3 waar onwaar

참고 : Jelly 바이트가 아닌 UTF-8 바이트가 있습니다.


1

루아 / 자바 스크립트, 68 바이트

x=1//1print(...and"true"or"false")
--x;alert(prompt()?"vrai":"faux")

내가 왜 골프를했는지 모르겠다. 나는 단지 그것을 느꼈다.


1

자바 스크립트 / BF

이 두 언어 모두에서 입력은 거짓으로 간주되지 않으며 입력은 참으로 간주됩니다.

프로그램 구조가 왼쪽으로 90도 회전하면 BF 기호가 도시의 타워처럼 보입니다. :)

온라인으로 사용해보십시오 (BF true testcase)!

온라인으로 사용해보십시오 (BF 허위 테스트 케이스)!

console.log(prompt()?"true":"false")
/*
           >,[>
+          <<]>>[->-<]
+          >[<->[-]]<>[-]<[>>
+++        [->
++++       <]>[->
++++++++++ <]>---.>]>
++++++++++ [->
++++++++++ <]
+++        [->
+++++      <]>.<
++++       [->----<]>--.<
+++        [->
++++       <]>
+          .<
+++        [->---<]>-.
*/

설명

자바 스크립트

(가) 경우 prompt사실이다 (즉 때문에 버리지 prompt, 출력 반환 문자열) true, 또는 다른 출력을 false.

BF

sand입력이 있으면 출력 (참의 경우 덴마크어 usand), 입력이 비어 있으면 출력 (거짓)합니다.

TL; DR 입력이 비어 있지 않은 경우 (즉, true) 아무 것도 출력하지 마십시오. 입력이 비어 있으면 (즉, false) output u. 그런 다음 입력이 true인지 false인지에 관계없이 output sand.

https://esolangs.org/wiki/Brainfuck_algorithms 에서 영감을 받아 프로그램의 논리를 구성했습니다.

입력하십시오. 입력이 비어 있지 않으면 메모리를 늘리고이 셀을 "셀 A"라고하자. if 문을 종료하십시오

>
,[
>+
<<
]>

"Cell A"의 값을와 비교합니다 0. 동일하면 "Cell B"가되게 1하거나 그렇지 않으면이라고합니다 0.

>
[->-<]+>[<->[-]]<

"Cell B"가 1이면을 출력하십시오 u. if 문을 닫습니다

>[-]<
x[>>
+++[->++++<]>[->++++++++++<]>---.
>]

산출 sand

>
++++++++++[->++++++++++<]+++[->+++++<]>.
<++++[->----<]>--.
<+++[->++++<]>+.
<+++[->---<]>-.

BF 버전의 경우 u조건부로 출력 해서는 안 s됩니까?
HyperNeutrino

@AlexL. u조건부로 출력
user41805

오. 설명이 s조건부로 출력된다고 말했기 때문에 혼란스러워했습니다 . 명확성을 위해 고칠 수 있습니까? 어쨌든 좋은 대답입니다.
HyperNeutrino

If input is empty (ie false), output `s`.Alex L.이 혼란스러워했던 부분이라고 생각합니다.
Outgolfer Erik

@AlexL. 나는 실수를 알아 차렸다, 나는 지금 그것을 편집했다!
user41805

1

하스켈, 자바 스크립트, Python, 115 바이트

q=1//1#1;f True="waar";f False="false";a//b=0;a#b=0{-
1//1;f=lambda x:"wahr"if x else"falsch";"""
f=x=>x+[]//"""#-}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.