Esta pergunta foi escrita porque "Thing Explainer" é divertido de ler e me deu uma idéia.
Escreva "coisas que fazem o computador fazer coisas" que lê / pega um conjunto de letras, números e coisas assim "#%|?
e retorna True / 1
se todas as palavras fizerem parte desse conjunto .
Se todas as palavras não fizerem parte desse conjunto, retorne as palavras que não fizeram parte dele.
Este site pode ser considerado correto em todos os casos. As regras foram escritas para seguir as especificações desse site.
Exemplos:
Verdade :
O código deve retornar um valor verdadeiro se o texto inteiro acima da primeira linha horizontal for colado como entrada.
As linhas a seguir devem retornar um valor de verdade (a entrada é separada por ###
)
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 :
Nos exemplos a seguir, entrada e saída são separados por ***
. Diferentes casos de teste são separados por ###
.
This code doesn't return "Hello, World!"
***
code
###
tHiS rEtUrN"s false...
***
s
false
Regras mais detalhadas:
- Você pode usar isso para testar seu código.
- As não letras são interpretadas como espaços pelo código, exceto por palavras como
'wasn't'
. As palavras com apóstrofos que retornamtrue
estão incluídas na lista- Por exemplo:
foo123bar
deve retornarfoo
ebar
, como eles não fazem parte da lista, e123
podem ser interpretados como espaços
- Por exemplo:
- A entrada conterá apenas pontos de código ASCII imprimíveis [10, 32-126].
- As palavras podem conter letras maiúsculas e minúsculas. Veja o segundo caso de teste.
- A lista de palavras
- deve ser tomado como entrada (STDIN, argumento da função ou equivalente)
- pode ser modificado (as palavras podem ser separadas por nova linha, vírgula etc., e você pode classificar a lista)
- Observe que você não pode usar esta lista (não é idêntica)
- A saída pode estar em qualquer formato que você quiser
- A saída pode ser maiúscula, minúscula ou mista (opcional)
- Não deve haver símbolos na saída
Para constar, Jonathan Allan encontrou um caso estranho: a implementação no XKCD na verdade ignorará qualquer letra após um apóstrofo até o próximo não [AZ] [az] ['] - por exemplo find's found
, e find'qazxswedc found'
ambos não retornam nada, enquanto find'qazx.swedc found
retornos swedc
.
Você pode escolher se deseja devolver nada find'qazxswedc found'
ou retornar qazxswedc
. Retornar qazx, swedc
para find'qazx.swedc
também está OK.
fonte
Boolean
ouArray<String>
, seria permitido retornar uma matriz / lista vazia?1
. Uma saída vazia não é permitida.find'qazxswedc
entrada. Devemos ou não devemos nos apóstrofos? Por exemplo,isn't
retornatrue
(está na lista), masisn
retornaisn
, pois isso não está na lista. A partir dessa lógica, fui com "não dividir em apóstrofes" e, portanto,find'qazxswedc found
retornafind'qazxswedc
.Respostas:
PowerShell v3 +,
10592 bytesLeva palavras simples como
$a
, e palavras como$b
. Faz auxiliar$x
. Pegue cada palavra$b
e livre-se de quaisquer letras que não sejam ruins e depois verifique-as|{...}
. Se essa palavra não estiver$a
, então a adicionamos$x
. No final, escolhemos$x
ou1
não$x
. Que é enviado,words
ou1
.Algumas palavras para tentar
fonte
Python, 93 bytes
Todos os casos de teste estão em ideone
O pré-processamento da lista é dividir
|
e colocá-lo em umset
(o que eu acho que é bom se a pré-classificação for permitida). Introduza palavras comow
e o conjunto comos
.Se isso não for permitido, isso se tornará 98 bytes com o
not in s
devirnot in set(s)
.Poderíamos pré-processá-lo para ter todas as permutações de caracteres maiúsculos e minúsculos também e economizar 8 bytes, mas acho que isso pode estar indo longe demais (isso seria um conjunto enorme).
fonte