To pytanie jest napisane, ponieważ „Thing Explainer” jest fajny do czytania i dał mi pomysł.
Napisz „rzeczy, które zmuszają komputer do robienia rzeczy”, które czyta / pobiera zestaw liter, cyfr i tym podobne "#%|?
i zwraca, True / 1
jeśli wszystkie słowa są częścią tego zestawu .
Jeśli wszystkie słowa nie są częścią tego zestawu, zwróć słowa, które nie były jego częścią.
Ta strona internetowa może być uznana za poprawną we wszystkich przypadkach. Reguły są napisane, aby były zgodne ze specyfikacjami na tej stronie.
Przykłady:
Prawda :
Kod powinien zwrócić prawdziwą wartość, jeśli cały tekst powyżej pierwszej linii poziomej zostanie wklejony jako dane wejściowe.
Poniższe wiersze powinny zwrócić prawdziwą wartość (dane wejściowe są oddzielone ###
)
This returns "Hello, World!"
###
tHiS rEtUrNs TrUe...
###
Thing Explainer is a book written by a man.
The man writes books with simple words.
###
This set of stuff "#!^{>7( must return true
Falsey :
W poniższych przykładach dane wejściowe i wyjściowe są oddzielone przez ***
. Różne przypadki testowe są oddzielone ###
.
This code doesn't return "Hello, World!"
***
code
###
tHiS rEtUrN"s false...
***
s
false
Bardziej szczegółowe zasady:
- Możesz użyć tego do przetestowania swojego kodu.
- Kod nieinterpretowany jest przez kod jako spacja, z wyjątkiem słów podobnych
'wasn't'
. Zwracane słowa z apostrofamitrue
znajdują się na liście- Na przykład:
foo123bar
powinien powrócićfoo
ibar
, ponieważ nie są częścią listy i123
mogą być interpretowane jako spacje
- Na przykład:
- Dane wejściowe będą zawierać tylko punkty kodu ASCII do wydruku [10, 32-126].
- Słowa mogą zawierać małe i wielkie litery. Zobacz drugi przypadek testowy.
- Lista słów
- należy przyjmować jako dane wejściowe (STDIN, argument funkcji lub równoważny)
- można modyfikować (słowa można rozdzielić znakiem nowej linii, przecinkiem itp., a także możesz posortować listę)
- Pamiętaj, że nie możesz użyć tej listy (nie jest identyczna)
- Dane wyjściowe mogą być w dowolnym formacie
- Dane wyjściowe mogą być duże, małe lub mieszane (opcjonalnie)
- Na wyjściu nie będzie żadnych symboli
Dla przypomnienia, Jonathan Allan znalazł dziwny przypadek narożny: implementacja na XKCD faktycznie zignoruje wszelkie litery po apostrofie do następnego non-[AZ] [az] ['] - na przykład find's found
i find'qazxswedc found'
oba nie zwracają niczego, podczas gdy find'qazx.swedc found
zwraca swedc
.
Możesz wybrać, czy chcesz nic nie zwracać find'qazxswedc found'
, czy zwrócić qazxswedc
. Powrót qazx, swedc
do find'qazx.swedc
jest również OK.
źródło
Boolean
lubArray<String>
, czy dozwolone byłoby zwracanie pustej tablicy / listy?1
. Puste wyjście jest niedopuszczalne.find'qazxswedc
danych wejściowych. Czy my, czy nie, powinniśmy rozdzielać apostrofy? Na przykładisn't
zwracatrue
(jest na liście), aleisn
zwracaisn
, ponieważ nie ma jej na liście. Z tej logiki wybrałem „nie podzielaj się apostrofami”, a zatemfind'qazxswedc found
powracafind'qazxswedc
.Odpowiedzi:
PowerShell v3 +,
10592 bajtówPrzyjmuje proste słowa jak
$a
i słowa podobne$b
. Czyni pomocnika$x
. Weź każde słowo$b
i pozbądź się złych, a nie liter, a następnie sprawdź każde z nich|{...}
. Jeśli tego słowa nie ma$a
, dodajemy go do$x
. Na koniec wybieramy$x
lub1
nie$x
. To jest wysyłane albowords
albo1
.Kilka słów do wypróbowania
źródło
Python, 93 bajty
Wszystkie przypadki testowe są w ideone
Wstępne przetwarzanie listy polega na podziale
|
i umieszczeniu go wset
(co moim zdaniem jest w porządku, jeśli dozwolone jest wstępne sortowanie). Wpisz słowa asw
i ustaw jakos
.Jeśli to nie wolno tego staje się z 98 bajtów
not in s
stajenot in set(s)
.Moglibyśmy go wstępnie przetworzyć, aby mieć wszystkie kombinacje wielkich i małych liter, a także zaoszczędzić 8 bajtów, ale myślę, że może to pójść za daleko (to byłby ogromny zestaw).
źródło