Musisz utworzyć poliglot, który wyprowadza kwadrat danych wejściowych w jednym języku i pierwiastek kwadratowy danych wejściowych w innym języku. Najkrótsza odpowiedź w bajtach wygrywa!
Musisz mieć dokładność co najmniej 3 miejsc po przecinku, a wartość wejściowa zawsze będzie dodatnia.
auto
oznacza „przydział na stosie”. Słowo kluczowe jest dość bezużyteczne, ponieważ i tak jest domyślne, więc C ++ zmieniło jego przeznaczenie na coś innego. Jednak w języku C nie wyraża żadnej opinii na temat typup
(jest to klasa pamięci, a nie typ), więc jestint
domyślnie liczony (domyślnie takieint
zachowanie jest obecnie odradzane i prawdopodobnie istnieje tylko dlatego, że niektóre z poprzedników C w ogóle nie miały typów danych, ale kompilatory nadal to rozumieją). I oczywiście(int)0.5
wynosi 0n^2
.Python 2 i Python 3,
2321 bajtówPython 2.x produkuje
n^2
, Python 3.x produkujesqrt(n)
.2 bajty zapisane dzięki @Dennis!
źródło
or
?/
wykonuje dzielenie całkowite (1/2==0
). W Py3 dokonuje podziału zmiennoprzecinkowego (1/2==0.5)
.0
Jest falsey.2sable / Galaretka , 2 bajty
2sable oblicza kwadrat. Wypróbuj online!
Galaretka oblicza pierwiastek kwadratowy. Wypróbuj online!
Jak to działa
2sable
Galareta
źródło
C (clang) i Python ,
1091076953 bajtówC: Wypróbuj online!
Python: Wypróbuj online!
Działa przy użyciu komentarzy do polyglot. Reszta jest dość objaśniająca.
Pierwszy raz używając C!
źródło
return 0;
koniec - C99 zawiera ukryty zwrot 0 namain()
. Źródłostdio.h
w takim przypadku?Ohm and Jelly , 3 bajty
Zwraca kwadrat w Ohm, pierwiastek kwadratowy w Galaretce.
Ohm i Jelly używają różnych jednobajtowych stron kodowych, więc program będzie wyglądał inaczej w każdym kodowaniu.
xdx zrzut zrzutu programu:
Galareta
Za pomocą strony kodowej Jelly wygląda to tak:
Galaretka zajmuje najniższy wiersz jako główny link i ignoruje inne linki, chyba że są specjalnie wywoływane. Więc tutaj po prostu robi pierwiastek kwadratowy (
½
) i niejawnie go wyprowadza.Om
Przy użyciu strony kodowej Ohma (CP437) wygląda to tak:
²
jest funkcją kwadratową⌂
i◙
oba są niezdefiniowane, więc program po prostu podnosi niejawnie odczytane dane wejściowe i niejawnie je wyprowadza.źródło
½
bajt, do czego służy²
mapa? Czy to tylko śmieci są nadal ignorowane? I odwrotnie dla Ohma? Wtedy wydaje się, że to 2 bajty.²
w Ohm jest w punkcie kodowym 5. Kod w punkcie 5 w Galaretce jest%
i nie robi nic, więc nie ma znaczenia, jaki jest pierwszy wiersz. Załóżmy, że½
w Galaretce jest 27, a kod 27 w Ohmie jestJ
i nie robi nic, więc nie ma znaczenia, co jest drugim wierszem. Zatem jeśli masz plik00000101<newline>00011011
, ma on 3 bajty. Chyba jedynym problemem jest to, że nowa linia znajduje się w innym miejscu na stronach kodowych.C89 i C99, 47 + 3 = 50 bajtów
Wymaga
-lm
flagi (+3)C89 produkuje
n^2
, C99 produkujesqrt(n)
. Aby przetestować w C89, wypróbuj online!Nakłonienie C89 do wykonania
sqrt
wersji powinno zająć mniej kodu, ale nalega na niejawne zadeklarowaniesqrt
funkcji za pomocąint
s, więc jest to najlepsze, co mogłem zrobić.źródło
Octave / MATLAB,
3129 bajtówDaje to kwadrat w Octave i pierwiastek kwadratowy w MATLAB.
Wyjaśnienie:
Składnia jest oczywiście identyczna w MATLAB i Octave (przynajmniej dla tego małego fragmentu kodu).
To tworzy anonimową funkcję:
źródło
Basic / Delphi - 6 znaków
Pierwiastek kwadratowy w Basic i kwadratowy w Delphi.
Za pomocą debugera możesz sprawdzić wyrażenie, spełniając w ten sposób wszelkie wymagania wyjściowe!
źródło
x
? Nie możesz założyć, że jest zapisany do wartości. Ale możesz faktycznie usunąć(x)
i oznaczyć ją jako zwracającą funkcję.05AB1E / Fireball , 3 bajty
Program składa się z następujących bajtów:
05AB1E oblicza pierwiastek kwadratowy, kwadraty Fireball.
Objaśnienie (05AB1E -
ý¹t
):Objaśnienie (Kula ognia -
²╣t
):Czasami pomaga mieć niekompletny język;)
źródło
PHP7 + JavaScript,
626158 bajtówTo było naprawdę trudniejsze niż się spodziewałem! Jestem dość zaskoczony, jak długi jest mój kod.
Jak to działa?
Działa to poprzez wybranie z tablicy kodu do uruchomienia.
Wykrywanie PHP i JavaScript odbywa się za pomocą
+![]
.W PHP
[]
(pusta tablica) jest wartością fałszywą, podczas gdy w JavaScript jest wartością prawdziwą (obiekty (oprócznull
) są zawsze prawdziwe, a nawetnew Boolean(false)
prawdziwe!).Ale muszę uzyskać wartość liczbową, więc po prostu używam
not
(!
) i przekonwertowałem ją na liczbę całkowitą (z+
).Teraz PHP daje wartość
1
, podczas gdy JavaScript daje0
.Umieszczenie kodu w tablicy, przy tych indeksach, pozwoli nam wybrać odpowiedni kod dla pożądanego języka.
Można tego użyć jako
[JS,PHP][+![]]
, aby uzyskać kod odpowiedniego języka.W poprzednich poliglotach użyłem
'\0'=="\0"
, który jesttrue
w JavaScript (ponieważ\0
jest analizowany jako bajt NULL) ifalse
w PHP ('\0'
nie będzie analizowany jako bajt NULL, porównując literał ciąg\0
z bajtem NULL).Cieszę się, że udało mi się zredukować tę kontrolę do
+!'0'
.Jeszcze bardziej cieszę się z @rckd , który zredukował go do obecnej wersji!
Od tego momentu
eval
jest to po prostu wymagany kod.PHP
PHP wykona
echo$argv[1]**.5
(ekwiwalentecho sqrt($argv[1]);
, pierwiastek kwadratowy z liczby), otrzymując wartość z drugiego argumentu i wyświetli ją na standardowym wyjściu.JavaScript
Wykonuje się JavaScript
alert((_=prompt())*_)
, który wyświetla kwadrat w liczbiealert
.Dziękujemy @rckd za zapisanie 1 bajtu i @ user59178 za zapisanie 3 bajtów!
źródło
echo$argv[1]**.5
zamiastecho sqrt($argv[1])
05AB1E i galaretka , 4 bajty
(05AB1E) - (galaretka)
Myślę, że ktoś inny miał rację, ponieważ znaki UTF-8 nie współużytkują tej samej operacji na stronach kodowych, które technicznie są 2-bajtowe do zakodowania. Jednak patrząc na to pod kątem zrzutu heksadecymalnego:
W kodowaniu CP1252 05AB1E powoduje to:
Oznacza to, że nadal będzie generować kwadrat i wyjść, ignorując resztę. Gdy te bajty są kodowane przy użyciu strony kodowej Jelly:
Który jest pierwotnie zamierzonym kodem, po uruchomieniu powoduje pożądany wynik pobrania danych wejściowych i pobrania sqrt.
źródło
Ɠ
i½
wymaga dwóch bajtów do zakodowania. Jednak sekwencja bajtów6e 71 93 0a
(nqƓ½
dla Galaretki,nq“\n
dla CP-1252) powinna działać w obu językach.½
przebywający na obu stronach kodowych nie pozwala na zaliczenie go jako pojedynczego, ponieważ zakładam, że są to różne operacje? Nadal jestem rozmyślany na temat całej strony kodowej.6e 71 93 0a
więc nie ma „teoretycznie” roszczenia 4 bajtów. Wystarczy odebrać 4 bajty. Tak się składa, że w standardowym kodowaniu 05AB1E odczytuje jedną rzecz, która robi to, co chcesz, podczas gdy w standardowym kodowaniu Jelly, czyta inną, która robi to, co chcesz. Nawiasem mówiąc, tylko dlatego, że 2 kodowania mogą kodować ten sam znak, nie oznacza, że znak będzie taki sam w obu z nich. Pomyśl tylko o kodowaniu, takim jak szyfr numeryczny z już udostępnioną tabelą odnośników, i mam nadzieję, że da ci to dobry początkowy model mentalny.CJam / MATL , 8 bajtów
Oblicza kwadrat w CJam ( Wypróbuj online! ) I pierwiastek kwadratowy w MATL ( Wypróbuj online! ).
Objaśnienie kwadratu w CJam
Wyjaśnienie pierwiastka kwadratowego w MATL
źródło
Python 2 i Forth,
4333 bajtyWypróbuj online: Python 2 (kwadrat) | Naprzód (sqrt)
To ewaluuje do anonimowej funkcji w Pythonie i wbudowanej funkcji
fsqrt
w Forth. Python może mieć funkcję o nazwief
dla 2 bajtów więcej, umieszczającf=
przed lambda.Program Forth przyjmuje literał zmiennoprzecinkowy , który w Forth musi być zapisany w notacji naukowej. Pi obcięte do 3 miejsc po przecinku (
3.141
) można zapisać w następujący sposób:źródło
JavaScript (ES6) / JavaScript (ES7), 52 bajty
Zwraca kwadrat danych wejściowych w ES7 i pierwiastek kwadratowy w ES6. Całkiem trudne do przetestowania, chyba że masz starszą przeglądarkę, która obsługuje ES6, ale nie ES7.
źródło
PHP i CJam ,
302925 bajtówOblicza kwadrat w PHP i pierwiastek kwadratowy w CJam. Musi być uruchomiony przy użyciu
-r
PHP.PHP
Podnosi argument pierwszego wiersza poleceń (
$argv[1]
) do potęgi 2 i wysyła go. Tutaj$argv[1]
jest faktycznie wstawiany jako zmienna wbudowana w łańcuch, który jest rzutowany na liczbę przed wykonaniem potęgowania. To dlatego, żev
nie jest to poprawna instrukcja w CJam i spowoduje błąd podczas analizy, ale umieszczenie jej w łańcuchu nie spowoduje żadnych problemów.#
rozpoczyna komentarz, więc wszystko po nim jest ignorowane.Wypróbuj online!
CJam
Pierwsza część kodu
ECHO"$argv[1]"**2;#
przekazuje wiele wartości i wykonuje szereg operacji, z których wszystkie są całkowicie bezużyteczne. Jedyną ważną rzeczą jest to, że nie powodują żadnych błędów, ponieważ zaraz po];
tym następuje owinięcie całego stosu w tablicę, a następnie odrzucenie go.Następnie odczytuje podwójną wartość z input (
rd
) i otrzymuje pierwiastek kwadratowy (mq
) i domyślnie wyprowadza go.Wypróbuj online!
źródło
C, język skryptowy operacji Flashpoint , 52 bajty
W skrypcie OFP średnik na początku wiersza powoduje, że wiersz ten jest komentarzem, podczas gdy C nie przejmuje się dodatkowym średnikiem.
DO:
Wypróbuj online!
Język skryptowy OFP:
Zapisz jak
init.sqs
w folderze misji, a następnie zadzwoń za pomocąhint format["%1", 2 call F]
.Wynik:
źródło
Siatkowy / befunge-98 , 15 bajtów
Języki 2D!
Befunge-98
Siatka
źródło
> <> / Galaretka , 9 bajtów (7 bajtów kod + 2 dla flagi „-v” w> <>)
Człowieku, naprawdę dobrze się bawię ze strukturą linków Jelly.
Oblicza kwadrat w> <> i pierwiastek kwadratowy w Galaretce .
źródło
-v
Moim zdaniem użycie jest zgodne z [najczęściej głosowaną odpowiedzią [( codegolf.meta.stackexchange.com/a/11431/44874 ) w meta-pytaniu dotyczącym tej sprawy.><>
Interpreter tego potrzebuje-v
i jest to dla nich najprostszy możliwy pw.Python 3 + JavaScript, 101 bajtów
Pierwiastek kwadratowy w JS, kwadrat w Pythonie.
Działa w przeglądarce Firefox (testowanej na FF 52) i wymaga
(function(x) x)(42) === 42
poprawnej składni. Wymaga również ES7 dla**
operatora.źródło
x=>x**y
zamiast tego użyć ? A może Python się tym zadławi?function
nie jest słowem kluczowym, jest to prawidłowy identyfikator. Właśnie przypisałem mu funkcję noop (wewnątrzexec
instrukcji).bash i sh, 48 bajtów
Aktualizacja: Muszę przyznać się do porażki. Odpowiedź bash / sh Digital Trauma jest o wiele bardziej elegancka niż ta.
produkuje bash, produkuje
n^2
shsqrt(n)
.bc
jest potrzebny tylko, abysqrt
można go było obliczyć. Różnica w zachowaniu polega na bashu i sh.OK, technicznie rzecz biorąc, „sh”, którego używam, to wciąż bash, ale bash w trybie „POSIX” (co się dzieje, jeśli wywołujesz
/bin/sh
zamiast/bin/bash
w systemach, gdzie/bin/sh
jest alias bash). Jeśli tak jest w twoim systemie, możesz przetestować za pomocą:Jest to oparte na jednej z różnic wyjaśnionych tutaj: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
źródło
kill -l
(wyświetla listę możliwych sygnałów; niczego nie zmienia) wbash
ish
. Jest to jedna z wielu różnic, które można znaleźć tutaj: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.htmlQBIC / QBasic,
2618 bajtówW QBasic wymaga liczby i wypisuje ją do kwadratu. Reszta kodu jest ignorowana, ponieważ QBasic postrzega go jako komentarz (
'
).QBIC używa tej samej instrukcji wejściowej. Następnie wydrukował tę samą liczbę do kwadratu, a następnie podniósł do potęgi jednej czwartej, skutecznie zrootując ją dwukrotnie. Wynika to
'
z dosłowności kodu: czysty kod QBasic, który nie jest analizowany przez QBIC.źródło
Galaretka / Pip , 6 bajtów
EDYCJA: Jest to bajt krótszy do odwrócenia operacji.
Wypróbuj Jelly online!
Galaretka rozpoczyna wykonywanie na dole kodu („głównego linku”) i sprawdza, czy potrzebuje czegoś wyższego: rozpoznaje komendę do kwadratu i pośrednio dba o dane wejściowe i wyjściowe.
Wypróbuj Pip online!
Pip wykonuje górną linię, podnosząc do kwadratu (domyślnie odczytany z linii cmd) var a i domyślnie drukuje to. Dolna linia jest ignorowana.
źródło
PRTaVS
.Wolfram Language / PHP , 25 bajtów
Uzyskaj kwadrat liczby w języku Wolfram i uzyskaj pierwiastek kwadratowy w PHP;
Pierwsza linia to język Wolfram. Po pierwsze, jesteś tym, który zmienia nw pasku wyszukiwania w Wolfram Alpha, więc kod jest również wejściem. Następnie wygeneruje odpowiedź po naciśnięciu Enter
Druga linia to PHP, Pobiera pierwiastek kwadratowy z n, który należy wprowadzić w pasku adresu (np. Ppcg.php.net?n=213, gdzie 213 jest wartością n)
źródło
PHP 5.6 i PHP 7, 55 bajtów
PHP 5.6 produkuje
n^2
, PHP 7 produkujesqrt(n)
.źródło
macOS Bash i sh, 24 bajty
Na komputerze Mac
sh
jestbash
uruchomiony w trybie POSIX i w tym przypadku, jak na https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :Zatem dla
sh
zmiennej zmiennap
ma wartość^4
po:
uruchomieniu, ale dlabash
zmiennejp
ma tę wartość tylko podczas:
uruchomienia, a następnie jest pusta.Będąc nadal naprawdę
bash
pod przykryciem, niektóre bashizmy, takie jak<<<
tustringi, nadal działają zarówno w przypadku bash, jak i sh.Bash and dash (i GNU utils), 27
Na Ubuntu 16.01
sh
jest dowiązaniem symbolicznym dodash
, które nie robi<<<
ciągów znaków. Mamy więc zamiast tego:Wypróbuj online .
źródło
Oktawa / kardynał , 28 bajtów
Ten program wyrównuje dane wejściowe w Kardynale i pobiera pierwiastek kwadratowy w Oktawie
Wypróbuj online! (Oktawa)
Wypróbuj online! (Kardynał)
Tak więc% jest komentarzem jednowierszowym w Octave, więc po prostu pobiera dane i drukuje pierwiastek kwadratowy
Aby program Kardynał nie napotkał błędu dzielenia przez zero i umarł, program
został przesunięty o spację, która jest ignorowana przez oba programy
Objaśnienie programu Kardynał:
Program rozpoczyna się od%
Otrzymuje dane wejściowe i przechowuje wartość jako aktywną:
Ustawia nieaktywną na równą aktywnej =
Mnoży aktywną przez nieaktywną t
Na koniec wyprowadza aktywną wartość.
źródło
PHP / JavaScript, 43 bajty
Dane wejściowe wyglądają następująco:
Trochę samo wyjaśniające, ale czy to pasuje do zasad? Mój pierwszy kod do golfa :-)
źródło
alert(<?=$x*$x.')>'.sqrt($x)?
)CGL (CGL Golfing Language) / JS (ES6), 13 bajtów (niekonkurencyjny)
Nie konkuruje, ponieważ:
CGL nie jest prawidłowym językiem .Z powodu+
iⓟ
CGL jest technicznie poprawnym językiem.Kod:
JS:
Proste: anonimowa funkcja strzałki, która zwraca pierwszy argument podniesiony do kwadratu. Nienazwany kod języka jest komentowany.
CGL:
Non-breaking space przed pierwszą linią działa jak komentarz. Nie
/
ma operacji. W-
drugim wierszu oznacza zmniejszenie aktualnego numeru stosu, który domyślnie wynosi 0. To ustawia go na -1, gdzie zapisywane są dane wejściowe.₂
Zastępuje pierwszy element w bieżącym stosie z jej pierwiastek kwadratowy, co jest teraz, gdzie wejście jest umieszczony. Domyślnie bieżący stos jest wyprowadzany, generując pierwiastek kwadratowy z danych wejściowych.źródło