Te znaki ASCII od kodu dziesiętnego 33 do 126 są:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Zauważ, że w większości czcionek 25 z tych znaków ma „dziury”: ( rodzaj większy niż 0 , można powiedzieć)
#$%&04689@ABDOPQRabdegopq
Pozostałe 68 „nieholowanych” postaci to:
!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~
Twoim zadaniem jest napisanie najkrótszego możliwego programu, używając tylko nieholowanych znaków, które wypisują każdy z otworów dokładnie raz w dowolnej kolejności.
Ponieważ spacja, tabulator i znaki nowej linii (przesunięcie wiersza i / lub powrót karetki) są puste, mogą pojawić się w programie lub jego wynikach. Wciąż liczą się do liczby znaków. Inne znaki ASCII nie mogą być używane (a na pewno nie znaki inne niż ASCII).
Notatki
- Nie musisz używać wszystkich bezbożnych postaci ani tylko jednej z nich.
- Dane wyjściowe nie mogą zawierać znaków bez etykiety.
- Język białe znaki mogą być użyte.
- Dane wyjściowe powinny przejść do standardowego wyjścia lub do pliku. Nie powinno być żadnych danych wejściowych.
Premia: Dla zabawy spróbuj wydrukować wszystkie bezbożne postacie, używając postaci z otworami. Jestem sceptyczny, że można to zrobić w istniejącym języku.
źródło
main
.~
?Odpowiedzi:
Pyth ,
4335 znakówWypróbuj tutaj .
Drukuje znaki w kolejności, z wyjątkiem tego, że 9 jest na początku, znak nowej linii jest oddzielony.
Łańcuch zawiera wszystkie znaki o 7 większe od potrzebnych, z wyjątkiem tego, że 9 zamieniłoby się w @, więc jest to specjalny przypadek. Algorytm dzięki @Howard.
Wyjaśnienie:
źródło
GolfScript,
3736 znakówWypróbuj kod tutaj .
Ciąg zawiera niedozwolone znaki xor'owane na 25. Na szczęście wszystkie znaki są odwzorowane na prawidłowe.
źródło
Brainfuck 119
źródło
--
na początku ... Czy wracasz do początkowej liczby 254?Bonus - dc, 179 znaków
No dobrze, kolejne ograniczone wyzwanie dla zestawu znaków, gdzie
P
jest dozwolone.Ponieważ
dc
jest najwyraźniej na tyle niejasny, że wymaga wyjaśnienia (dziwne dla mnie, biorąc pod uwagę dziwne rzeczy tutaj!), Oto przegląd:Jest to przede wszystkim kalkulator RPN z arytmetyką o dowolnej precyzji. Ale do tego wyzwania używam
P
polecenia, które interpretuje liczbę jako ciąg znaków w bazie 256 i wypisuje je. Przykłady:65 P
wydrukiA
(kod ASCII 65).16706 P
wydrukiAB
(16706 = 65 * 256 + 66).Poza tym jedyną interesującą cechą jest to, że rozpoznaje wszystkie cyfry szesnastkowe,
0-9A-F
nawet jeśli nie są zawarte w liczbie szesnastkowej. Domyślne jest wprowadzanie dziesiętne, więc token wejściowy999
oznacza9 hundreds + 9 tens + 9
iABC
oznacza,10 hundreds + 11 tens + 12
że jest równoważny1122
.Możliwość używania cyfr
ABD
dziesiętnych częściowo równoważy brak możliwości używania12357
, a wybór kolejności i grupowania zajmuje resztę. (Jeśli muszę kilka liczbx
,y
,z
a oni nie są odwzorowane z dozwolonych cyfr, a następnie staram reprezentującyx*256*256+y*256+z
zamiast).Program można prawdopodobnie nieco skrócić, używając większych grup. Nie przekroczyłem 3 bajtów na liczbę.
źródło
dc bonus.dc
. dc jest jednym z najstarszych dostępnych języków i jest stałym elementem * nix od dziesięcioleci. Nie jest to jednak dobrze znane, prawdopodobnie ze względu na tajemną i niezbyt czytelną składnię RPN. Świetny na niektóre wyzwania związane z golfem ;-)Bash + coreutils, 56 bajtów
Szczęśliwie, dodanie 7 do wartości ascii znaków z dziurkami daje wszystkie nieholowane postacie (z wyjątkiem „9”). Więc wykonujemy tę transformację w odwrotnej kolejności, a następnie podobną transformację (odejmij 12 z „E”), aby uzyskać „9”.
Wynik:
źródło
-7
wyraźnie widoczne między znakami interpunkcyjnymi, a te 2 fakty nie mają ze sobą nic wspólnego.Perl - 49 bajtów
To w zasadzie wersja Perla rozwiązania Howarda. XORing ciągu za pomocą 25. Dane wyjściowe to plik o nazwie
#$%&04689@ABDOPQRabdegopq
. Wpadłem na pomysłsymlink
i nazwę pliku jako format wyjściowy, ponieważ wszystko inne jest zbanowane.Oto inne rozwiązanie Perla, które wymyśliłem. Prawdopodobnie można go znacznie poprawić i jest dość długi, więc na razie pozostawiam go w czytelnym formacie.
Ten wyświetla wiele plików, a nazwa każdego z nich to jeden ze znaków. Nie mogłem wymyślić, jak dołączyć ciągi znaków bez użycia zabronionej postaci.
for
,while
,map
,say
,print
,eval
,s///e
, A każda nazwa zmiennej nie może być stosowany (zmienne zacząć@
lub$
w Perlu) co czyniło to trudne.Mam nadzieję, że nazwy plików są prawidłowe jako format wyjściowy, ponieważ jestem prawie pewien, że każdy inny sposób wyświetlania informacji wykorzystuje jeden z zakazanych znaków.
źródło
-p
flagi i*_=\(
...)
: Wypróbuj online!-p
flaga zostałaby zbanowana, ponieważp
ma dziurę.MATLAB, 36 bajtów
TAK ZAMKNIĘTE .... Tylko 1 bajt więcej niż obecny zwycięzca (isaacg)! Które po dalszej inspekcji zrobiły już to, co postanowiłem zrobić. Cóż, bez szkody przy ponownym opracowaniu koła ...
Wiem, że to stare wyzwanie, ale zdałem sobie sprawę, że dopiero po tym, jak się nim zainteresowałem.
Gdybym tylko mógł przekonać MATLAB do zrozumienia, że chcę ciąg bez osobnych
''
... sugestii, ktoś?źródło
Brainfuck
303275Brainfuck, najlepszy bezbłędny język ezoteryczny (oprócz Białej Przestrzeni);)
źródło
Ctrl
+K
:)`
To zwrot. (Nazywany również poważnym akcentem, chociaż „ cytat rzeczy ” jest dla mnie nowy: P)JS - 196 - spróbuj
źródło
h=1-1;j=3+3;k='\\x';m=!i+k;c=m[1];f=m[i=2+2];l=k+3;n=k+j;r=k+i;this[f+'v'+c+'l'](c+'l'+f+'rt("\\x23\\x2'+i+k+25+k+2+j+l+h+l+i+l+j+l+2*i+l+3*3+r+h+r+1+r+2+r+i+r+'f\\x5'+h+k+51+k+52+c+n+2+n+i+f+n+7+n+'f\\x7'+h+k+'71")')
- inlinel
, skróconem
, zadeklarowanei
przy pierwszym użyciu, stworzyło kilka dodatkowych zmiennych dla powtarzających się wzorów (możesz to poprawić, poprawiając kolejność znaków wyjściowych, ale to jest poza moją cierpliwością: P).GolfScript, 89 znaków
Po prostu buduje tablicę wszystkich znaków ASCII i odejmuje od nich znaki „niefunkcjonujące”.
źródło
Befunge 98 - 69 bajtów
Robi to w 3 częściach. Taki, w którym wartości bezholowanych znaków różnią się od postaci z otworami o 5. Następnie te, które różnią się o 1, a na koniec lista bezholowanych znaków, które różnią się o 3 od otworów. Instrukcja programu zakończenia w Befunge to „@” (wartość znakowa 64), więc na końcu ładuję „?” (wartość char 63) dodaj 1, a następnie umieść to w kodzie z instrukcją „s”.
Mógłbym bardziej zagrać w golfa, konsolidując trzy
sekcja, ale prawdopodobnie niewiele.
źródło
JavaScript
240228Pierwsze złożenie:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;1[_="c\157nstruct\157r"][_](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')()
To dobry początek, oto jak się psuje ...
A potem pomyślałem ... „Musi być prostszy sposób…” i jest…
Zmienione zgłoszenie:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;this[y+"v"+z+"l"](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')
Widząc mogę korzystać
eval
(przez składając je razem, inspirację z @bebe, który jest o wiele szybciej niż przy użyciuconstructor
tematyceconstructor
tematycenumber
...) I wywiercone w dół do 228 ... wiem, że to nie może wygrać tę szczególną Golf Wyzwanie , ale to tylko mój sposób pokazania, jak bardzo możesz nadużywać JavaScript, i nadal uzyskać pożądany wynik ...źródło
Główny - Bezsenność , 50
Wyprowadza:
Premia - Bezsenność, 268
Wyprowadza:
Myślę, że powinno być możliwe skrócenie długości programu, jeśli wyjście zostanie zmienione, ale muszę zmodyfikować mój program wyszukiwania, aby to zrobić.
Aby pokazać przypadek innego języka, który może działać z ograniczoną liczbą znaków. Nawiasem mówiąc, może pisać prawie o każdym wyjściu, mając tylko 3 unikalne znaki w źródle.
Obecnie jest to jedyny język, który może wykonać zarówno główne wyzwanie, jak i bonus wśród wszystkich istniejących odpowiedzi.
Tłumacz na bezsenność .
źródło
Befunge 98 - 46 bajtów
Befunge-ified wersja wpisu Pyth isaacga:
źródło
Japt , 33 bajty
Wypróbuj online!
Ten sam algorytm jak w Pyth Isaacga, w Japt jest po prostu krótszy.
Jak to działa
Tak, to JS, który jest jednym z najbardziej nadużywających języków , tylko krótszy (i nie potrzebujesz
alert
aniconsole.log
tutaj).źródło