Cóż, wszyscy kochają Polyglots . Otrzymasz dwie liczby całkowite, w dowolnej standardowej formie wprowadzania (bez kodowania twardego). Twoim zadaniem jest napisanie poliglota, który znajdzie minimalną wartość w języku i maksymalną wartość między dwiema liczbami w innym języku, i wykona następujące operacje:
- Kod, który znajdzie wartość maksymalną, musi również obliczyć ich sumę.
- Program, który znajdzie wartość minimalną, musi również obliczyć wynik ich odejmowania (
max - min
) - Oto „trudna część” : jeśli dwie liczby są równe, oba programy nie mogą niczego wysyłać / zwracać (zarówno do, jak
STDOUT
i doSTDERR
dowolnej innejreturn
metody) - Patrz wyjście specyfikacje sekcję uzyskać więcej informacji na temat formatowania
Wejście
Jak wspomniano powyżej, dwie liczby całkowite pobrane jako dane wejściowe w dowolnej standardowej metodzie , wspólnej dla obu języków.
Dane wyjściowe
- Dla programu, który znajdzie
max
, format powinien mieć:max_value, addition result
- Dla programu, który znajdzie
min
, format powinien wynosićmin_value, subtraction result (max - min)
- Wyniki mogą być drukowane, z wyraźnego separatora (
,
\n
,,
lub cokolwiek innego chcesz), powrócił z funkcji jako ciąg znaków zawierający dwa oczekiwane wartości z ogranicznikiem lub jako lista numerów (np[max_value,sum]
)
Przykłady:
Input || Max Language Output || Min Language Output
100, 40 || 100, 140 || 40, 60
63, 67 || 67, 130 || 63, 4
-45, -5 || -5, -50 || -45, 40
21, 21 || ||
-1, 1 || 1, 0 || -1, 2
Punktacja:
To jest gra w golfa , więc spróbuj napisać najkrótszy kod, aby uzyskać pożądane wyniki, zwracając uwagę, że standardowe luki są surowo zabronione. Musisz użyć dwóch różnych języków, a nie innych wersji tego samego języka (np .: Python 2
- Python 3
pary są nieprawidłowe)
code-golf
math
arithmetic
polyglot
Pan Xcoder
źródło
źródło
Odpowiedzi:
05AB1E / galaretka ,
2120 bajtów-1 bajt po prośbie o pomoc - dzięki Emigna! (
`
będziepush(uwrapped(pop()))
)Surowe bajty (zrzut po prawej pokazuje, co wyświetla mój komputer z systemem Windows):
Oba pobierają dane wejściowe ze STDIN i dane wyjściowe do STDOUT jako reprezentację listy
[x, y]
.Maksymalny język to 05AB1E:
Gdzie
.
reprezentują bajty niedrukowalne na stronie kodowej ( cp1252 ) i prawdopodobnie tutaj, w czymkolwiek używacie (0x18 = CANi 0x04 = EOT).Wypróbuj wersję 05AB1E
Minimalny język to Jelly:
Wypróbuj wersję Jelly .
W jaki sposób?
05AB1E:
Galareta:
źródło
C i C ++ (gcc),
117107 bajtów-10 bajtów dzięki @Steadybox!
Objaśnienie: W C
auto c=.5
deklaruje zmienną całkowitą z klasą automatycznego przechowywania (która jest domyślną), która jest następnie inicjowana na 0, podczas gdy w C ++ 11 deklaruje podwójną, która jest inicjowana na 0,5. Tak więc wartość zmiennej będzie prawdziwa w C ++, a fałsz w C.C - maksymalny język: Wypróbuj online!
C ++ - min language: Wypróbuj online!
źródło
auto c=.5
, a następnie użyćc
zamiastsizeof'a'-1
. W Cauto c=.5
deklaruje zmienną całkowitą z klasą automatycznego przechowywania (która jest domyślną), która jest następnie inicjowana na 0, podczas gdy w C ++ 11 deklaruje podwójną, która jest inicjowana na 0,5. Tak więc wartość zmiennej będzie prawdziwa w C ++, a fałsz w C.Python 3 / Jelly , 42 bajty
Używanie strony kodowej Jelly do kodowania pliku.
Surowe bajty:
Oba definiują nienazwaną funkcję dyadyczną.
Python (maksymalny język) widzi:
Testuje jako Python .
Jelly (minimalny język) widzi:
Testuje jak galaretka .
W jaki sposób?
Galaretka interpretuje 0x0a jako
½
atom pierwiastka kwadratowego, podczas gdy Python interpretuje go jako nową linię. W Jelly 0x7f jest interpretowane jako separacja linków (funkcji) i jest reprezentowane przez znak nowej linii lub pilcrow na swojej stronie kodowej. Dla Galaretki ostatni link jest główną funkcją - tutaj nie wywołuje powyższego linku (który interpreter nadal musi poprawnie parsować). W Pythonie 0x23#
instruuje, że cokolwiek po nim i przed 0x0a, nowa linia, jest komentarzem.Kod Python, który zostanie wykonany:
Wykonany kod Jelly:
źródło
\x7f
i\x04
dla niedrukowalnych w Pythonie).Ruby / Python 3, 102 bajty
Ruby zwraca max / sumę, Python zwraca min / różnicę. Dane wejściowe to obiekt tablicy odczytany ze STDIN.
Wypróbuj online: Ruby
Wypróbuj online: Python
Głównym dziwactwem używanym tutaj jest użycie prawdy
0
w Ruby, co w Pythonie jest fałszem. Inną rzeczą, o której warto wspomnieć, jest to, żesort
funkcja Pythona modyfikuje listę w miejscu i zwracaNone
, podczas gdy Ruby nie i zwraca posortowaną tablicę, stąd potrzeba użyciab or a
aby uzyskać min / max.Python 3 jest wymagany, ponieważ Python 2 narzeka, jeśli spróbujesz zadzwonić
print
poor
instrukcji w ostatnim wierszu.źródło
Java / AWK ,
219217212196 bajtówWypróbuj online!
Java wyprowadza maksimum i sumę, AWK wyprowadza min i różnicę. Brak danych wyjściowych dla, jeśli dane wejściowe są identyczne.
To mój pierwszy poliglot i pierwszy TIO :)
źródło
JavaScript (ES6) / QBasic,
172171 bajtówNa podstawie tego mojego rozwiązania podobnego pytania na temat poligloty .
W tym rozwiązaniu również należy stosować podejście komentowania!
JavaScript to minimalny język. Pobiera tablicę zawierającą liczby jako dane wejściowe. Wypisuje dwie liczby oddzielone przez
,
(1. liczba jest najmniejszą wartością tablicy wejściowej, a 2. liczba jest różnicą największej i najmniejszej wartości tablicy wejściowej) przezalert()
ing. Nie ma znaczeniaalert()
, jeśli liczby są równe. Możesz wywołać funkcję jakf([100,40])
.QBasic jest językiem max. Wielokrotnie prosi o dane wejściowe, dwukrotnie. Wyświetla największą liczbę liczb wejściowych, a także sumę największych i najmniejszych liczb wejściowych. Nie ma znaczenia
PRINT
, jeśli liczby są równe.Jak to działa?
W QBasic (język ustrukturyzowanej rodziny BASIC; nie wymaga numerów wierszy),
'
oznacza początek komentarza, który trwa do końca wiersza. Natomiast w JavaScript oznacza początek łańcucha. Tak więc cała pierwsza linia jest oznaczona jako komentarz w QBasic, ale w JavaScript linia jest wykonywana (i ta linia zawiera część JavaScript, która oblicza najmniejszą liczbę i różnicę największych i najmniejszych liczb, a także/*
na końcu który rozpoczyna komentarz w celu ukrycia reszty kodu QBasic przed interpretatorem JavaScript).Kod z drugiej linii do drugiej ostatniej linii zawiera kod QBasic do obliczenia największej liczby oraz sumy największej i najmniejszej liczby (kod jest bardzo zrozumiały).
Ostatni wiersz zawiera
'*/
.'
powoduje, że interpreter QBasic interpretuje następujący kod jako komentarz, podczas gdy w JavaScript nie ma żadnego efektu, ponieważ jest częścią komentarza (który został uruchomiony na końcu pierwszego wiersza). Poniższy kod (*/
) powoduje, że JavaScript kończy komentarz, który został uruchomiony w pierwszym wierszu, ale nie jest wykonywany w QBasic, ponieważ QBasic uważa, że jest to część komentarza.Przypadki testowe
JavaScript (min. Język):
QBasic (maks. Język):
Przejdź do tej strony . Skopiuj wklej następujący kod w ich edytorze tekstu:
Powodem, dla którego numery linii są wymagane, jest to, że wspomniana strona internetowa obsługuje tylko nieustrukturyzowane języki BASIC. I ta strona internetowa jest jedynym przyzwoitym tłumaczem BASIC, jaki udało mi się znaleźć. Jednak uruchomienie kodu znajdującego się w górnej części postu (kod bez numerów linii) powinno działać dobrze w każdym dobrym interpretera QBasic, który obsługuje ustrukturyzowany język BASIC i
'
jako narzędzie do komentowania (choć niewielu tego nie robi, większość jednak tak robi)źródło