Po całej zabawie, jaką mieliśmy z wyzwaniami poliglotycznymi w ( niedawnej ) przeszłości, co powiesz na wyzwanie, w którym wyniki mogą być w dwóch językach?
Twoja odpowiedź musi zaakceptować wartość logiczną b
i wydrukować tekst "true"
lub "false"
. Ten sam kod musi wyjścia, gdy prowadzony w innym języku, "waar"
lub "onwaar"
lub innego przekładu true
i false
.
Wejście
- Dane wejściowe to wyraźnie odróżniająca się prawda / falsey. Dopuszczalne są wartości rzeczywiste T / F, bit, int lub (pusty) ciąg znaków.
- Dane wejściowe muszą być takie same dla wszystkich części Twojego zgłoszenia.
Wynik
Dane wyjściowe mogą być zwracane przez funkcję, zapisywane
STDOUT
, umieszczane w wyskakującym oknie, drukowane w 3D i wysyłane pocztą itp.Dane wyjściowe muszą reprezentować stan
b
. Tak więc „prawda” musi być wyrażeniem „prawda”, „waar” ... a „falsey” powinno prowadzić do „fałszu”, „onwaar” itp.Różne języki mogą korzystać z różnych metod wyjściowych.
Użyte języki
Jednym z twoich wyników MUSI być
"true"
i"false"
.Różne wersje języków programowania są liczone jako różne języki dla tego wyzwania.
Różne dialekty ludzkiego języka liczą się jako różne języki dla tego wyzwania.
Możesz rozszerzyć poliglota na więcej niż dwa języki programowania. Każdy język programowania musi generować odrębny język ludzki.
Odpowiedź z włączoną większością języków zostanie ogłoszona zwycięzcą. Po remisie brana jest pod uwagę liczba bajtów.
źródło
"True"
i są"False"
akceptowane zamiast wymaganych"true"
i"false"
?Odpowiedzi:
Dyalog APL ,
243237 bajtów : 14 języków, z możliwością rozszerzenia do 131 *-6 bajtów dzięki Soaku .
Wymaga
⎕IO←0
ustawienia domyślnego w wielu systemach. Monity o wprowadzenie0
lub1
.W zależności od wersji (od 9.0 do 16.0, z mniejszymi wersjami) wyświetla w języku angielskim, hiszpańskim, portugalskim, niemieckim, wietnamskim, francuskim, tureckim, włoskim, polskim, sundajskim, filipińskim, jorubskim, uzbeckim lub rumuńskim, chociaż bez znaków diakrytycznych.
⎕AV⍳'ëáàÆÅÄòðÓÈÇ'
w indeksów A TOMIC V wtryskiwacza (151 142 141 133 131 122 121 132 111 102 101 96)((
...)⍳
...)
znajdź pozycję⍎
oceniany⎕D∩⍨
przecięcie D igits i4↑
cztery * pierwsze znaki1⊃
drugi element#⎕WG'APLVersion'
numer wersji(
...)⊃
następnie użyj tego, aby wybrać⎕⊃
element wejściowy (0: pierwszy; 1: drugi) elementus¨
funkcja s (którą wkrótce zdefiniujemy) zastosowana do każdej z nich⌽
odwrotność(s←{
...})
s zastosowane do - gdzie s jest zdefiniowane jako1↓¨
pierwsza postać wypadła z każdego z nich⍵⊂⍨
argument podzielił gdzie⍵=
znaki argumentu są równe⊃⍵
pierwszy znak argumentu';,true,adevarat,
...,falsch',
ten ciąg poprzedzony18⍴',falso'
osiemnaście znaków pobranych cyklicznie z tego ciągu* Od wersji 12.1 numer wersji zawiera numer kompilacji, więc zwiększając liczbę znaków pobranych z tego ciągu, można łatwo objąć wszystkie 131 języków łacińskich .
źródło
prawdziwy
doprawda
ifalszywy
dofalsz
. Krótsze formy pasują tutaj lepiej i dają lepszy wynik.6 języków, 169 bajtów
Oczekuje
0\n
lub1\n
jako dane wejściowe i drukuje słowa w:vals/waar
),faux/vrai
),false/true
),usant/sant
),usand/sand
),falso/vero
).źródło
print
oświadczenia!Wszystkie grzyby, 6 języków, 146 bajtów
💥 Teraz w 3D! 💥
Dla jasności rozdzieliłem dwie płaszczyzny kodu, abyś mógł zobaczyć, jak są one warstwowe. Na dysku te dwa bloki zostałyby oddzielone znakiem wysuwu formularza na końcu wiersza powyżej.
Reguły mówiły, że różne wersje języka liczą się jako osobne języki, więc jest to sześć wersji Funge / Befunge. :)
Dzięki Dennisowi wszystkie wersje Befunge można teraz przetestować online w TIO . Jednak obecnie nie działają implementacje wariantów Unefunge i Trefunge, więc dla tych polecam Rc / Funge .
A
jest ignorowany w Befunge 93 i 96, ale jest poleceniem About Face w 97 i nie jest obsługiwany w 98, a zatem odzwierciedla. Oznacza to, że 93 i 96 podążają wv
dół, a 97 i 98 owijają się po przeciwnej stronie pola gry.W Befunge 96 a
;
po nim spacja na początku linii oznacza ją jako komentarz, dzięki czemu linia jest pomijana, a tłumacz kontynuuje do>
trzeciej linii. W wersji 93 tłumacz podąża>
za drugą linią.Ścieżka 97/98 nadal w pierwszej linii od prawej do lewej strony, pomijając sekcji wewnątrz
;
znaczników komentarza, wypełnia&
polecenie, ostatecznie osiągając sekwencję U-bendv<^<
. W Unefunge te zmiany kierunku nie są obsługiwane, więc interpreter odwraca kierunek i wykonuje poprzednio pominiętą sekcję w komentarzach. W Befunge / Trefunge kontynuuje się w lewo.W Befunge 97
m
polecenie nie jest obsługiwane i dlatego jest pomijane, więc interpreter kontynuuje wzdłuż pierwszej linii. W 98 jest tylko 3D, więc odbija się w Befunge (2D), a tłumacz podąża za niąv
z prawej strony, aż do czwartej linii. W Trefunge (3D) jest to gałąź High-Low, która przenosi poziom wzdłuż osi Z do drugiej płaszczyzny.Tak więc poza przypadkiem Unefunge, każda wersja gromadzi swoje pary ciągów z osobnego wiersza, zanim zostanie skierowana do jednego z
&
poleceń w celu uzyskania danych wejściowych od użytkownika. Te ścieżki kodu następnie łączą się ze sobą za pomocą^
poleceń w drugiej kolumnie, kierując przepływ programu w górę przez górę pola gry, ponownie owijając się w dół.Wreszcie mamy
^_^
sekwencję, która decyduje, którą ścieżką podążać na podstawie danych wprowadzonych przez użytkownika. Jeśli 0 , przechodzimy od razu do sekwencji wyjściowej (>:#,_
), zapisując fałszywy ciąg. Jeśli 1 , najpierw wykonujemy,>_
który usuwa pierwszy ciąg ze stosu, a tym samym wyprowadza prawdziwy ciąg.źródło
5 języków, 249 bajtów
Uwaga:
\r
i\e
są dosłownie znakami linii i znakami ucieczki, ale\x5b
muszą być takie, jakie są w przeciwnym razie Ruby narzeka na klasę znaków w wyrażeniu regularnym.Trochę za późno na imprezę i wcale nie zwycięzca, ale zacząłem pracować nad poliglotą na Święto Dziękczynienia i czułem, że może być trochę za późno, więc przekształciłem go w to!
Wyjaśnienie
Python:
True
/False
Tutaj możemy ustawić
q
na0//1
co0
, to mamy'''
ciąg znaków, który zawiera większość innych kodów, przechowywać tablicę zawierającąFalse
iTrue
oraz indeksów0
i1
odpowiednio przypisać wejście dob
(co powinno być0
albo1
zdecydowanymFalsy
iTruthy
), a następnieprint
zb
th wskaźnika
, pokazującyFalse
lubTrue
.Ruby:
Vrai
/Faux
Podobnie jak w przypadku skryptu Python, ustawiamy zmienną
q
, ale w Ruby jest to ustawione0 / /1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord
, ponieważ Ruby dzieli to0/
jako „zero podzielone przez”, a następujące/
jako „początek wyrażenia regularnego”. Używając tego literału, jestem w stanie ukryć kod PHP i uruchomić Pythona'''
. Musimy dodać,.to_s.ord
ponieważ właściwym operandem/
musi byćFixnum
. Następnie definiujemy funkcjęinput()
i zmiennąTrue
orazFalse
zawierają ich francuskie odpowiedniki i wreszcie rozpoczynamy ciąg znaków,'
który przechodzi do następnego wiersza. Wreszcie możemy utworzyć tablicęa
, która zawiera"Vrai"
i"Faux"
wybierz je za pomocąinput()
numeru ed0
lub1
.Perl:
Waar
/Vals
W Perl, że
q=..=
,q+...+
iq-...-
bloki są notowane literały wykorzystaniem nietypowych ograniczniki w kodzie powyżej Mam wymieniać je z'...'
. Większość kodu jest zawarta w dosłownym ciągu, ale definiujemysub a
(który zawiera<><
!), Który sprawdza, czySTDIN
jest mniejszy niż1
, zwracając albo,Waar
alboVals
. Wprint(a[b])
rzeczywistościprint
jest wynikiem wywołaniasub
a
argumentu with i argumentu[b]
ArrayRef zawierającego goły wyrazb
.JavaScript:
Vero
/Falso
Pierwsza linia jest najczęściej komentowane przez podział
0//1
(//
jest linia komentarza w JavaScript), więc po prostu ustawićq
się0
. Kolejne oferty linii z mapowaniem funkcji JS ich nazw Python i ustawienie zmiennychTrue
iFalse
być włoskich struny, w końcu wykonujemy tak samo jak kod Ruby, wyznaczając do tablicy włoskich słów i wybierając stosującinput
z0
lub1
.PHP:
Ekte
/Falsk
Ponieważ PHP wykonuje tylko kod między
<?...?>
wszystkimi pozostałymi danymi wyjściowymi takimi, jakie są, tak więc nasz kod po prostu wypisuje wiersz (aby umieścić nas z powrotem na początku bieżącej linii) i sekwencję specjalną ANSI, aby wyczyścić do końca bieżącego linii, po czym następujeEkte
lubFalsk
w zależności od tego, czy znak wejściowy (0
lub1
) jest truthy lub falsy.źródło
Pyth, Python - 28 bajtów
źródło
.q
i dodając;
na końcu.C #, Java, 104 bajtów
Gra w golfa:
Nie golfowany:
Test:
DO#
Jawa
Wyjaśnienie:
Dzwoniąc
ToString()
lubtoString()
na Boolean w C # i Java, odpowiednio, C # drukuje ciąg z kapitału pierwszej litery,True
aFalse
, ale Java drukuje wszystko małymi literamitrue
afalse
.źródło
2 języki, 60 bajtów
Języki to:
true
false
waar
onwaar
Uwaga: Istnieją bajty UTF-8, a nie bajty galaretki.
źródło
Lua / JavaScript, 68 bajtów
Nie wiem, dlaczego to grałem w golfa; Po prostu się tak czułem.
źródło
JavaScript / BF
W obu tych językach żadne dane wejściowe nie są uważane za fałszywe, a dane wejściowe za prawdziwe.
Gdy zobaczysz, że struktura programu jest obrócona o 90 stopni w lewo, symbole BF wyglądają jak wieże w mieście :)
Wypróbuj online (BF true testcase)!
Wypróbuj online (fałszywa walizka BF)!
Wyjaśnienie
JavaScript
Jeśli
prompt
prawda jest (tzn. Nie jest pusta, ponieważprompt
zwraca ciąg znaków), generuje dane wyjściowetrue
lub dane wyjściowefalse
.BF
Wyjścia
sand
(duński dla prawdy), jeśli istnieje wejście, lub wyjściausand
(fałsz), jeśli wejście jest puste.TL; DR Jeśli dane wejściowe nie są puste (tj. Prawda), nie wysyłaj niczego. Jeśli dane wejściowe są puste (tj. Fałsz), dane wyjściowe
u
. Następnie, niezależnie od tego, czy dane wejściowe są prawdziwe, czy fałszywe, generują dane wyjściowesand
.Czerpałem inspirację z https://esolangs.org/wiki/Brainfuck_algorithms, z którymi zbudowałem logikę mojego programu.
Weź wkład. Jeśli dane wejściowe nie są puste, zwiększ pamięć, nazwijmy tę komórkę komórką A. Koniec instrukcji if
Porównuje wartość „Komórki A” z
0
. Jeśli są równe, niech „Komórka B” będzie1
, albo niech będzie0
.Jeśli „Komórka B” ma wartość 1, wówczas jest wysyłana
u
. Zamknij instrukcję ifWynik
sand
źródło
u
warunkowo, prawdas
?u
warunkowos
warunkowo; czy możesz to naprawić dla jasności? W każdym razie miła odpowiedź.If input is empty (ie false), output `s`.
Myślę, że to właśnie ta część pomieszała Alexa L.Haskell, JavaScript, Python, 115 bajtów
źródło