Um lipograma é um bloco de palavras que omite um símbolo específico. No momento, estou evitando nosso quinto símbolo de 26, que geralmente aparece. Você já deve saber o que estou omitindo. Caso contrário, procure "lipograma" e você saberá.
Sua tarefa
Com um caractere, um espaço em branco e uma sequência a seguir (os espaços em branco podem aparecer nisso; somente com caracteres ASCII 32-126) na entrada, saída falsa se esse caractere estiver na sequência de entrada, na verdade, se não. Esse caractere que você deve procurar sempre caberá em dois intervalos: "A" a "Z" ou "a" a "z" (ASCII 65-90, 97-122). Não faça distinção entre capitais e não capitais. Além disso, não se preocupe com espaços em branco ou símbolos de pontuação. Ambos os programas e funções satisfazem. Além disso, você pode dividir a entrada char e string em dois argumentos para programas ou funções, e a string como o primeiro argumento é aceitável.
Ilustrações
Truthy
e This is a lipogram.
a You need to consider other letters too.
E Capitals also count.
Falsy
e This sentence is not a lipogram (for e).
t This particular letter is surprisingly hard.
A You don't need to care about any non-alphabetic symbols.
Versão não lipogramada
Um lipograma é uma série de palavras que deixa de fora uma carta. Eu deixei de fora a letra "e" acima.
Sua tarefa é pegar um caractere e uma string (que podem incluir espaços) como entrada, separados por um espaço ou nova linha, e gerar falsas se o caractere estiver na string e, na verdade, de outra forma. Você pode assumir que a string é composta somente de caracteres ASCII imprimíveis (códigos de caracteres 32-126). O caractere sempre estará no alfabeto inglês e não há diferença entre letras minúsculas e maiúsculas. O personagem não será um espaço ou símbolo. Você pode escrever um programa ou uma função. Para ambos, você pode usar o caractere e a sequência como argumentos separados, e a sequência pode vir primeiro.
fonte
Respostas:
C, 42 bytes
fonte
Javascript ES6
342623 Bytesraspado 8 bytes obrigado @ MartinBüttner
fonte
/i
afetou\1
!05AB1E ,
7643 bytesCódigo:
Explicação:
Experimente online!
Verdade é quando a letra atual é emitida. Falsy é quando nada é produzido.
fonte
-
eficaz é uma operação de complemento ?TeaScript,
53 bytesAha \ o /! Eu esqueci a entrada implícita! O TeaScript inserirá automaticamente
x.
(a entrada) no início. Posso então verificar se tem a outra entrada (na variávelµ
) e, portanto, um NOT (N
). Eu acho que a melhor vantagem do TeaScript aqui é a sua entrada implícitaExperimente online
Explicação
fonte
Bash,
1611 bytes-i
é o sinalizador que não-v
diferencia maiúsculas de minúsculas, inverte (verifica se não há correspondência).O caractere deve ser fornecido como um argumento de linha de comando e a sequência de teste em STDIN.
Reduzido em 5 bytes com a ajuda do @ DigitalTrauma !
Amostras de execuções:
fonte
grep -iv $1
. Eu não vejo nada de errado com mistura STDIN e argumentos de linha de comando como métodos de entrada - I feito isso antes - mas talvez há um precedente meta que eu perdi ...^D
usuários comentem esta resposta? @Downgoat - você está aí? ;-)Japonês,
1264 bytesTeste online!
A resposta TeaScript da @ Downgoat me lembrou que o Japt possui exatamente o mesmo built-in, cortando os dois bytes finais.
Como funciona
fonte
CJam, 6 bytes
Experimente online! lel
Explicação
fonte
JavaScript (ES6), 29 bytes
fonte
c=>s=>!RegExp(c,"i").test(s)
, salvando um byte.c=>s=>!s.match(c,'i')
é 21. :)match
leva apenas um argumento. O segundo argumento registra um aviso do console no Firefox 39 ou posterior e não funciona no Firefox 47.Python 3, 36
Ter que ignorar a caixa é surpreendentemente caro.
Aceita os argumentos como (char, string)
fonte
Pitão,
87 bytesExplicação
Obrigado @FryAmTheEggman por me dizer que posso usar em
-
vez de!}
Experimente aqui
fonte
O, 8 bytes
Uma função anônima que recebe um caractere e uma string.
Experimente online.
Explicação
fonte
Perl, 11 + 1 = 12 bytes
Requer a
-p
chave e recebe as entradas como$string\n$letter
Como funciona:
fonte
<<<
.) (E usando STDIN normal (não<<<
), recebo 1, a menos que a letra seja o último caractere da string, porque você não a mastiga. )printf "this is a lipogram\ne\n" | perl -pe'$_=lc!~lc<>'
.<<<
é a sintaxe do bash.<<<
é apenas mais uma maneira de passar o stdin.Java, 63 bytes.
fonte
(s,c)->!s.matches("(?i:.*"+c+".*)")
que é mais curtaString
echar
em algum lugar.MATL , 5 bytes
Experimente online!
fonte
Sério, 6 bytes
Experimente online!
Aceita entrada como
'string'\n'char'
Explicação:
fonte
,ù,ùìuY
trabalho? (Que é suposto ser o eu que faz indexOf mas eu não lembro qual faz isso)Julia 0,3,
2220 bytesuppercase
é uma palavra longa .Como funciona
fonte
Retina, 11
Não sei ao certo o que conta como verdade / falsidade na Retina, isso ecoará a linha se for um lipograma para o caractere especificado e retornará a string vazia, se não for.
Isso também funcionará para entrada de várias linhas.
Experimente online!
fonte
Minkolang 0.15 , 10 bytes
Experimente aqui.
Explicação
fonte
Ferrugem, 75 bytes
Maior pontuação significa que eu ganho, certo? > _ <
Experimente aqui.
fonte
Gelatina, 8 bytes
Experimente online!
Como funciona
fonte
CJam, 10 bytes
Uma função anônima (bloco) que recebe um caractere (não uma string!) E uma string.
Experimente online.
Explicação
fonte
PowerShell,
3632302925 bytesUsa o
-notmatch
operador e simplesmente geraTrue
ouFalse
.fonte
Python, 34 bytes
Verifica se o caractere
c
está na sequências
, ignorando maiúsculas e minúsculas, anexando uma cópia trocada por maiúsculas des
paras
. A negação está terminadanot
, que parece longa, mas não vejo melhor. Este é o mesmo comprimento:Você não pode omitir os parênteses ou o Python interceptará a expressão como uma desigualdade de forma encadeada de três valores
_ in _ < _
.O Python 3.5 deve permitir 33 bytes por meio de conversões definidas, embora eu não possa testá-lo agora.
fonte
Pyke, 7 bytes
Explicação:
fonte
JavaScript ES6,
4140 bytesPega a cadeia inteira como argumento. Não consigo salvar bytes aceitando dois argumentos diferentes, porque minha resposta se fundiria com a outra resposta ES6 :(
fonte
not in
.R, 26 bytes
x é a string, y é a letra, o T na chamada para grepl faz com que não seja sensível a maiúsculas e minúsculas.
fonte
Jolf,
67 bytesAssim. Muitos. Seis. SMS? Bem, tente aqui mesmo assim. Substitua
⌂
por\x7f
.fonte
Ruby, 17 bytes
fonte
Lote, 53 bytes
Aceita entrada como dois argumentos de linha de comando. (Cite o segundo argumento, se necessário.) Produz 1 em caso de sucesso, nada se o primeiro argumento for (insensível) encontrado no segundo.
fonte
Mathematica,
3332 bytesAdoro quando ## pode ser usado. Entrada é string e, em seguida, char.
Ou, uma versão que diferencia maiúsculas de minúsculas: (11 bytes :)
Sim, apenas um builtin.
fonte