Gdy liczba jest wyświetlana na kalkulatorze, można rozważyć, jak wyglądałyby różne przekształcenia tej liczby. Na przykład na siedmiosegmentowym wyświetlaczu 2 pokazuje się tak:
A po odwróceniu w poziomie wygląda to tak:
W związku z tym odbicie lustrzane 2 wynosi 5.
Zadaniem w tym wyzwaniu jest pobranie liczby jednocyfrowej i zwrócenie liczby, która jest jej odbiciem lustrzanym (jeśli to możliwe). Jeśli jego odbicie lustrzane nie wygląda jak liczba, zwróć liczbę obróconą o 180 stopni (jeśli to możliwe). Jeśli nie ma żadnego z tych przypadków, zwróć -1.
Oto pełna lista wejść i wyjść, które Twój program musi obsłużyć:
Input Output
0 0
1 -1
2 5
3 -1
4 -1
5 2
6 9
7 -1
8 8
9 6
Jako wyzwanie do gry w golfa wygrywa najkrótszy kod!
Odpowiedzi:
Haskell -
433143 znaków bez niczego fantazyjnego.
Ograniczono go do 31 znaków, czyniąc z niego funkcję częściową.
źródło
f=
drugiego rozwiązania, ponieważ jest to prawidłowe wyrażenieGolfScript,
1514Przeczytałem specyfikację ponownie i stwierdziłem, że dane wejściowe muszą być ciągiem.
Biegać:
Stara wersja (z wprowadzoną liczbą całkowitą):
Nowszy (14 bajtów) jest nieco zainspirowany odpowiedzią CJam autorstwa aditsu .
źródło
PowerShell - 27
źródło
Python 2.x - 28
źródło
`
s i zapisać 2 znaki.JavaScript
3736źródło
.search()
i zapisz bajt.CJam, 20 bajtów
Wypróbuj online.
Wynik
Jak to działa
źródło
BEFUNGE 93 -
181420 bajtówWydaje mi się, że komentatorzy mają rację, chociaż Befunge jest linią 2d języka, jest trochę inna. Jednak w tej chwili komentatorzy mają rację.
Kroki:
Odczytuje dane wejściowe jako wartość liczbową x i wypycha je na stos.
Pobiera wartość znaku c (tak jak „!” = 33 lub „*” = 42. Pusta komórka = 32) w pozycji x, 1.
Odczytuje wartość znaku komórki 0,1 (33), odejmuje ją od c i wysyła jako wartość liczbową.
źródło
&1g'!-.
Java - 49
Tutaj
0x790a300601
jest wartość wypełniona pożądanymi wyjściami, z jedną dodaną, aby były dodatnie. Wartości są przechowywane w wartościach liczbowych w obrębie wartości, więc aby je wyskoczyć, konieczne jest trochę przesunięcia i maskowania.Java - 100 (opcja zabawy)
Nie jest to najmniejsza opcja, ale trochę zabawy. Znalazłem losowe ziarno, które generuje prawidłowe wartości, gdy jest wywoływane X razy (gdzie 0> = X <= 9).
źródło
JavaScript (ECMAScript 6) 25
JavaScript (ECMAScript 5) 43
AKTUALIZACJA: edc65 zasugerował znacznie lepszą technikę. szczoteczka do zębów sugeruje znacznie lepszy język. W tym momencie moim podstawowym wkładem jest debugowanie i gumowanie.
źródło
x=>[0,-1,5,-1,-1,2,9,-1,8,6][x]
.function(x)[0,-1,5,-1,-1,2,9,-1,8,6][x]
, również dzięki Firefoxowi. Zresztą i tak nie zamierzałem wygrywać, więc zdecydowałem się trzymać odpowiedzi o najwyższej kompatybilności. Jeśli zacznę zmieniać języki dla zwięzłości, w końcu zacznę definiować własny język dla każdego wyzwania, które podejmę. Ale i tak wspomnę o wersji ECMAScript 6, skoro ją zasugerowałeś-(x!=6)
. Dziękuję Ci.f=
chyba że dzwoniszf
rekurencyjnie lub pytanie wyraźnie wymaga funkcji o określonej nazwieuderzenie 29
na przykład
źródło
'
wyrażenie sed. Myślę też, że można pominąć,g
ponieważ specyfikacja dostarcza tylko jedną cyfrę na raz'
. Polubienieg
na dłuższy wkład!Kona - 29
Ta funkcja zwraca element
x
z tablicy0 -1 5...
Przykłady:
źródło
JavaScript 36
3741jako funkcja ES6 - 27:
źródło
f=v=>~-[1,,6,,,3,10,,9,7][v]
Sclipting, 11 znaków
Wreszcie znalazłem komputer z systemem Windows z zainstalowanym programem Visual Studio, aby zbudować jego interpreter. I z łatwością pokonał mój kod GolfScript.
Czyta
18453063256\11\?/11%(
w GolfScript.źródło
J -
2827 bajtówWiesz co lubię? Prostota (28 bajtów). Zauważ, że w J
_1
jest ujemny (-1).Dodaj trochę złożoności, a masz 27 bajtów.
Przykład:
źródło
CJam - 14
Wersja wejścia / wyjścia:
Wersja stosu (zakłada, że numer znajduje się na stosie):
Wypróbuj je na http://cjam.aditsu.net/
źródło
Perl,
2726Liczba obejmuje
p
flagęStosowanie:
Zaraz, czy Perl właśnie pokonał J? :)
źródło
y+0-9+9a4aa70a13+;$_=9-hex
echo 1 | perl -pe y/2569/5296/,s/[347]/-1/
Cudowne 34 bajty
To nie jest najkrótsze rozwiązanie, ale też nie jest najdłuższe.
Jak to działa
}0
spawnuje marmur reprezentujący pierwszą linię poleceń. Ten marmur upuszcza następny cel na=6
komórkę.=6
jest komórką porównawczą, popycha każdy marmur o wartości 6 w dół, a wszystkie inne w prawo. Ten zestaw komórek porównawczych przesuwa kulki w prawo, aż osiągną pożądaną wartość. 0 i 8 po prostu spadają i są drukowane, gdy spadną z dołu planszy, 6 i 2, a 9 i 5 najpierw dodają 3 do nich, odpowiednio odejmowane. Jeśli marmur nie równa żadnej z pożądanych wartości, wyląduje na?0
komórki, który zamieni każdy marmuru w 0 marmuru 1 . Ten marmur następnie ulega zmniejszeniu i spada z planszy.1
?n
marmur marmurem dowolnego technicznie obraca się marmuru z zakresu od 0 do n. Ma to fajny efekt uboczny, który?0
zmienia wszystko w 0.źródło
MATLAB - 35
Chciałbym zawinąć to w funkcję z
n
jako jedynym parametrem.35 znaków.
źródło
ECMAScript 6, 24
Przy normalnym JavaScript byłoby to 33:
źródło
TI-BASIC,
2422To koduje możliwe dane wyjściowe w tabeli odnośników przechowywanej jako liczba zmiennoprzecinkowa base-11; (N + 1) dziesiąta cyfra podstawowa po wyciągnięciu kropki dziesiętnej z tabeli w celu uzyskania wartości cyfry odwróconej. W bazie 11 liczba ta wynosi
.106003A097
, a cyfry tego mniejszego są dokładnie0,-1,5,-1,-1,2,9,-1,8,6
.Sztuczka edc65 polegająca na odjęciu jednego w przypadku 6 prowadzi do tego 24-bajtowego rozwiązania, w którym
⑩^(
jest jeden jednobajtowy token:Podejście łańcuchowe ma 29 bajtów:
Podejście tablicowe (które również Ypnpyn) ma 30 bajtów, przy założeniu, że liczba jest przechowywana w X:
24 -> 22: Usunięto dwie dodatkowe cyfry precyzji w stałej magicznej.
źródło
C - 47 bajtów [było 48 bajtów]
Aby dodać We / Wy (które inne odpowiedzi nie zawsze) dla 86 bajtów:
źródło
Python - 34
źródło
f=lambda n:ord(" "[n])-3
współpracuje z kosmos codekulptor.org/#user34_Q7NbNvQy55_0.py	
Jest minus 3 z tego powodu, że -1 pozostawia znak null, co nie jest dobre, a minus 2 pozostawia kanał, który jest zarezerwowany w pythonieJava, 58
59LUB
źródło
JavaScript
4237Uruchom go na konsoli przeglądarki
źródło
C -
1171081067776 bajtówNie najlepszy język do gry w golfa, ale cóż ...
Kompiluj się
gcc progname.c -o progname
. (Zignoruj ostrzeżenia lub dodaj-include stdio.h
do polecenia kompilacji).EDYTOWAĆ
Zgodnie z sugestią @ bebe, oto przykład, który bierze dane wejściowe z STDIN zamiast:
C -
6851 bajtówźródło
d=*b[1]-48
może być dobrym pomysłemmain(){printf("%d",(int[]){1,0,6,0,0,3,10,0,9,7}[getchar()-48]-1);}
przepraszam, że tak bardzo wam przeszkadzam, ale uważam, że jest to nieco krótsze.a[]={1,0,6,0,0,3,10,0,9,7};main(){printf("%d",a[getchar()-48]-1);}
main(){printf("%d","106003:097"[getchar()-48]-49);}
51 bajtówJ (24, funkcja)
(panel wprowadzania nie gra ładnie. Wklej poniższy tekst do interpretera Pythona, a moja odpowiedź zostanie ujawniona :)
źródło
Clojure - 36
źródło
05AB1E , 13 bajtów (niekonkurujące)
Wypróbuj online!
-3 dzięki Emignie .
Wyjaśnienie:
źródło
0®5®®Y9®8 6¹@
powinien również działać.@
.)¹è
lub)sè
.PHP ,
4839 bajtówDzięki Jörg Hülsermann
Wypróbuj online!
starsza wersja
Wypróbuj online!
źródło
Galaretka , 14 bajtów (niekonkurencyjna)
Wypróbuj online!
Wyjaśnienie:
źródło
ịV = žh‡
w 05AB1E