Wprowadzenie
Uwaga: nie jest to jakaś metoda zachęcania do oszukiwania. Jak już powiedział Cᴏɴᴏʀ O'Bʀɪᴇɴ , studiowanie jest najlepszym rozwiązaniem do zdania testu: 3.
Rozważ następujące odpowiedzi na test wielokrotnego wyboru:
ABCBCAAB
Oto tabela wskazująca, czy odpowiedzi pasują do siebie:
A B C B C A A B
A 1 0 0 0 0 1 1 0
B 0 1 0 1 0 0 0 1
C 0 0 1 0 1 0 0 0
To daje nam następujące liczby:
10000110, 01010001, 00101000
Wyzwanie polega na wydrukowaniu tych liczb binarnych. Ważne jest jednak, aby zobaczyć, które litery są używane w teście wielokrotnego wyboru. Na przykład:
ABCDCDBCDABC
Ta najwyższa list to D
, co jest 4-ty litera w alfabecie . Dlatego musimy wyprowadzić 4 różne liczby binarne. Mianowicie:
100000000100, 010000100010, 001010010001, 000101001000
Pamiętaj, że musisz spojrzeć na najwyższą literę . Rozważ następujący przykład:
AACCACAC
Chociaż B
nie jest używany, musimy podać wynik binarny dla B
. Oznacza to, że odpowiedź brzmiałaby:
11001010, 00000000, 00110101
Zadanie
Biorąc pod uwagę odpowiedzi na test wielokrotnego wyboru, wypisz liczby binarne. Możesz założyć, że dane wejściowe będą niepuste i będą zawierać tylko litery[A-Z]
. Zamiast zer i jedynek możesz również użyć wartości prawda i fałsz.
Przypadki testowe:
Input: ABBBABABA
Output: 100010101, 011101010
Input: AAAAAAAAA
Output: 111111111
Input: AFGHEEHFD
Output: 100000000 000000000 000000000 000000001 000011000 010000010 001000000 000100100
Input: Z
Output: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
Input: ABCDCDBCDABC
Output: 100000000100, 010000100010, 001010010001, 000101001000
To jest golf golfowy , więc wygrywanie z najmniejszą ilością bajtów wygrywa!
[a-z]
zamiast tego możemy użyć ?Odpowiedzi:
Pyth, 12 bajtów
Dane wyjściowe jako zagnieżdżona tablica wartości logicznych.
Wypróbuj tutaj .
źródło
Python 3, 71
Zaoszczędzono 22 bajty dzięki Ogaday.
Zaoszczędź 3 bajty dzięki DSM.
Zaoszczędzono sporo bajtów dzięki prawidłowej tablicy booli.
Pobiera duże linie poleceń.
źródło
*k,=map(ord,input())
PowerShell,
959473 bajtyPobiera dane wejściowe jako ciąg wielkich liter, ale natychmiast je rzuca
[char[]]
. Następnie zapętlamy od0..
maksymalnej wartości$a
pobranej alfabetycznie (stąd-65
konwersja z ASCII). Na przykład za pomocąADCEB
można to traktować jako zapętlenie odA
doE
.W każdej iteracji ustawiamy zmienną pomocniczą
$d
równą bieżącej wartości alfabetycznej (nie ASCII). Następnie pętla przez wszystkie$a
, za każdym razem albo oddanie0
lub1
na rurociągu, na podstawie tego, czy$_-$d-65
jest truthy lub falsey (czyli czy jesteśmy w prawo „gniazdo”). To działa, ponieważ każda niezerowa wartość w PowerShell jest truthy, co oznacza, jeśli nasza obecna list$_
nie „równe”, co jesteśmy w gniazdo$d
, to!
na to jest$false
, albo0
.Każdy z tych tablic
0
S i1
S jest następnie-join
ed razem i ponownie wprowadzone do rurociągu. Kiedy pętla zewnętrzna się kończy, mamy tablicę ciągów, która wypisze jeden ciąg w linii.Przykłady
Edycja 1 - zapisano bajt za pomocą logicznej nie-zamiast zamiastqq
Edycja 2 - zapisano kolejne 21 bajtów, eliminując dodatkową tablicę $ b
źródło
LabVIEW,
302220 LabVIEW PrymitywyPrzechodzi od az, aż suma wszystkich boolów będzie równa długości wejściowej. następnie Przekształca boole na liczby.
Teraz bezpośrednio bierze maksimum zamiast sprawdzania sumy bool.
Ponieważ boole 2D są opłacalne, teraz oszczędzam 2 prymitywy, wysyłając zielony drut przed nim,
?1:0
aby go przerobić, ale jestem zbyt leniwy ...źródło
Cjam, 25 bajtów
Westchnienie,
Wyjaśnienie
źródło
Haskell,
4634 bajtówPrzykład użycia:
g "ACDC"
->[[True,False,False,False],[False,False,False,False],[False,True,False,True],[False,False,True,False]]
.Jak to działa:
źródło
Pyth,
2019171514 bajtówWyjaśnienie:
Wysyła tablicę 2D booli
Wypróbuj tutaj
źródło
ES6, 92 bajty
Zwraca tablicę tablic fal i trues. Jeśli wolisz tablicę ciągów zer i jedynek, to dla 97 bajtów:
źródło
Oktawa, 19 bajtów
Wykorzystuje automatyczne nadawanie Octave w całym zakresie
A
do maksymalnego elementu na wejściu, aby wygenerować 2d wartość logiczną pasujących elementów.Przykład:
Wypróbuj tutaj na ideone .
źródło
Lua
208189 bajtówTo było trudne w Lua, jak zwykle musimy wszystko robić od zera, a to zajmuje dużo miejsca! Ten program przyjmuje ciąg jako argument i wypisuje wynik :).
Edycja: @Adnan powiedział mi, że możemy teraz zwrócić matrycę wartości logicznych, więc oto nowa wersja! Jest to teraz funkcja, która pobiera ciąg wielkich liter i zwraca macierz :).
Stara wersja 208 bajtów
Ten działa z argumentami i wynikami drukowania.
Bez golfa i wyjaśnienia
Próba wydrukowania tablicy w Lua spowodowałaby wydrukowanie jej adresu i konkatenacja booli jest niemożliwa. Oto funkcja, która pomoże ci, jeśli chcesz przetestować to zgłoszenie
źródło
Perl, 84 bajtów
Och, kochanie, chyba zepsułem zakreślacz.
Wersja bez golfa:
źródło
PHP,
106929087 bajtówUżywa kodowania Windows-1252.
Działaj w ten sposób (
-d
dodano tylko dla estetyki):$i=0
$x
gdzie indziej i zwiększając w$c
celu skompensowaniaźródło
C #, 68 bajtów
Uruchom w C # Pad
Ta anonimowa funkcja przyjmuje
char[]
jako dane wejściowe i wyjściowe anIEnumerable<IEnumerable<int>>
, tylko z zerami i jedynkami.źródło
k, 15 bajtów
Wypróbuj online!
źródło