Przegląd
Rozważ następujące zadanie:
Biorąc pod uwagę dodatnią liczbę całkowitą n> 0 , wypisz jej całkowitą pierwiastek kwadratowy. Pierwiastek całkowity z liczby n jest największą wartością x, gdzie x 2 ≤ n , zwykle wyrażoną wzorem
floor(sqrt(n))
.Przykłady:
25 -> 5
,24 -> 4
,40 -> 6
,1 -> 1
.
Samo to zadanie jest dość łatwe. Jednak w tym wyzwaniu Twoim zadaniem jest rozwiązanie tego w jak największej liczbie języków przy użyciu zestawu tylko 25 znaków.
Przykład
Najpierw musisz wybrać zestaw (bez duplikatów) 25 bajtów. Może to wyglądać mniej więcej tak (zwróć uwagę na wiodące miejsce):
()*-.05:=>Mabdhilmnqrst|
Twoim wyzwaniem jest zatem, używając tylko znaków w tym zestawie, skonstruować rozwiązanie problemu w jak największej liczbie języków tekstowych (przepraszam, Piet). Możesz używać znaków tyle razy, ile to konieczne, ale nie wolno używać znaków poza zestawem.
Rozwiązaniami mogą być pełne programy lub funkcje , ale nie fragmenty. Na przykład, używając tego zestawu znaków, mógłbym:
M -> (int) Math.sqrt(M) // Java (lambda expression)
M => Math.sqrt(M)|0 // Javascript (unnamed function)
lambda M: int(M**.5) // Python (lambda function)
Ponieważ użyłem 3 języków, dałoby mi to wynik 3 .
W odpowiedzi podaj również zestaw bajtów, których używasz.
Zasady
- To wyzwanie z kamienia rozetowego - twój wynik to liczba języków, w których składasz zgłoszenie. Najwyższy wynik wygrywa. Obowiązują standardowe luki.
- W przypadku tego wyzwania „język” liczy się jako wyraźnie inny język programowania - wiele wersji tego samego języka (Python 2, Python 3 itp.) Jest zabronionych.
- Programy muszą działać tylko dla danych wejściowych w standardowym zakresie liczb całkowitych języka.
- Programy z dokładnie tym samym kodem źródłowym (poligloty) są niedozwolone.
- Mówiąc ściślej, jest to zestaw bajtów , a nie znaków - możesz więc użyć 05AB1E
£
i galaretkiɱ
jako tego samego znaku (ponieważ mają ten sam punkt kodowy).
Nie czuj się tak, jakbyś musiał pokonać wszystkie inne rozwiązania - jeśli masz ciekawą odpowiedź, opublikuj ją!
P3 10 10 255
...)[]<>.,+-
- wyraźnie różni się od Brainfuck? Co z SNUSP , pochodną 2D Brainfuck? W obu przypadkach wynikowy kod nie działałby w Brainfuck.Odpowiedzi:
20 języków
Używanie
()-#*.05;=>^Vefikloqrst
(24 znaków) do tej pory:źródło
flr.(tt ^.5)
dla Wonder (bez dodanych znaków).{}[]
, możesz dodać Brain-Flak. Oto program~
, możesz to zrobićsqrt~~
w Stacked ; pobiera dane wejściowe z TOS i pozostawia dane wyjściowe na stosie.isqrt
isqrt
w Julii nie liczyłby się, ponieważ poligloty są niedozwolone.10 języków
Zestaw znaków 19 znaków (w CP-1252 ):
Gdzie
␊
reprezentuje nowego wiersza i␍
oznacza powrót karetki .( Skrypt do sprawdzania znaków )
Galaretka, 2 bajty
Wypróbuj online!
05AB1E, 2 bajty
Wypróbuj online!
GS2, 2 bajty
Wypróbuj online!
Jolf, 3 bajty
Wypróbuj tutaj! (działa najlepiej w przeglądarce Firefox)
Japt, 2 bajty
Wypróbuj tutaj!
MATL, 3 bajty
Wypróbuj online!
Pyke, 3 bajty
Wypróbuj tutaj!
Pyth, 6 bajtów
Wypróbuj tutaj!
Oaza, 6 bajtów
Wypróbuj online!
2sable, 9 bajtów
Wypróbuj online!
źródło
cU
pracuje również w Jolfie.c
do listy znaków. Używa już zarównom
(w pod-odpowiedzi Oasis), jak if
(w pod-odpowiedziach Japt i Pyke).5 języków
Wkrótce dodam więcej języków.
Zestaw znaków (22 bajty):
Pyt
JavaScript
Tak właściwie
CJam
Pyton
źródło
|
na^
w odpowiedzi JavaScript, aby zapisać bajt w zestawie znaków.5 języków
18 znaków.
Staram się nie używać żadnych znaków alfabetu ...
Brainfuck , Brainfuck ++ , Brainfuck-ng , Braintrust , ...
Nie działa od nowa,
224
ponieważ256
(= (sqrt (225) +1) ^ 2) przepełnia się.Zamieniłem wszystkie
-
s na+
s, aby użyć o jeden znak mniej. (np.-
-> 255+
s)Oryginalny program
Brain-Flak
@ Kod WheatWizard. Dzięki za pozwolenie!
Brain-Flueue
Kolejny kod @ WheatWizard.
Numberwang
Łyżka
Według meta konsensusu kod ten powinien być w porządku, nawet jeśli obecnie nie ma dostępnych tłumaczy.
źródło
5 języków
Używanie
()*/12 dlinpqrstu
i nowa linia (18 znaków) do tej pory.Common Lisp
Wbudowana funkcja.
QBasic
Python 3
Python 3 używany do dzielenia zmiennoprzecinkowego bez miejsc dziesiętnych.
Pypeć
Niepotrzebnie golfowy, aby pochwalić się jednostronnym operatorem inwersji
/
. Pobiera dane wejściowe ze standardowego wejścia. Wypróbuj online!tinylisp
sqrt
jest funkcją pomocniczą, której argumentami są: bieżąca domysłn
,n
kwadrat iinput
liczba. Jeśliinput
jest mniejsza niżnsqr
, poszliśmy za daleko, więc wróćn
minus 1; w przeciwnym razie powtórz, dodając 1n
i dodającn + n + 1
donsqr
. (Matematyka jest nieco skomplikowane, ponieważ tinylisp tylko został zbudowany w odejmowanie). Druga linia określa naszą rzeczywistą funkcję, która przyjmuje pojedynczyinput
i zwraca wyniksqrt
zn
zaczynając od 1.źródło
{}[]
, możesz dodać Brain-Flak. Oto program6 języków
Korzystanie
retun flosq(agm1)\,i
i rozszerzanie współrzędnych kodowychB1
iBC
jak dotąd dla 22 bajtów.Język GameMaker
Pyke
Julia
Klon
Oblepiony
TI-Basic (zrzut heksadecymalny)
Zauważ, że 0x72 jest
r
w ASCII.źródło
7 języków
24
znaki:CJam
Jawa
Kod łańcucha
Matematyka ++
Szeroki uśmiech
Oblepiony
Unilinear
R
Kosztuje za dużo bajtów
Pyton
źródło
R
:sqrt