Desafio simples inspirado na popularidade do meu texto invisível de impressão anterior e nos desafios de texto invisível real e com o mesmo comprimento de desafio de sequência diferente .
Dada uma sequência que consiste apenas em caracteres imprimíveis ( 0x20 to 0x7E
), imprima todos os caracteres imprimíveis que não estão presentes na sequência.
Entrada
Uma sequência ou matriz de caracteres que consiste apenas em caracteres ASCII imprimíveis
Resultado
Todos os caracteres ASCII imprimíveis que não estão presentes na sequência de entrada, em qualquer ordem.
Casos de teste
Input: "Hello, World!"
Output: ""#$%&'()*+-./0123456789:;<=>?@ABCDEFGIJKLMNOPQRSTUVXYZ[\]^_`abcfghijkmnpqstuvwxyz{|}~"
========
Input: "Hi!"
Output: " "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmnopqrstuvwxyz{|}~"
========
Input: ""
Output: " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
========
Input: " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
Output: ""
Pontuação
Isso é código-golfe, e o menor número de bytes em cada idioma ganha
set( 'a', 'b', 'c' )
Respostas:
GS2 , 2 bytes
Experimente online!
Como funciona
fonte
Perl 6 , 29 bytes
Observe que o resultado é aleatório porque Set s não é ordenado.
Teste-o
Expandido:
Há também uma versão ASCII do
∖
(-)
, mas isso exigiria um espaço antes dele, para que não seja analisado como uma chamada de sub-rotina.fonte
Python 3.5 , 39 bytes
Experimente online!
Transforma a entrada em um conjunto e remova-a do conjunto que contém todos os caracteres ascii
fonte
Japonês , 14 bytes
Experimente online!
Economizou 4 bytes graças a Shaggy e obarakon
fonte
127
por#
para salvar um byte e remova oU
para salvar outro.¦
e reorganizar seus argumentos para salvar alguns bytes. Além disso, 127 pode ser encurtado TIOHaskell, 32 bytes
Experimente online!
Função de biblioteca chata para definir a diferença:
Haskell, 31 bytes
fonte
MATL , 5 bytes
Experimente online!
Obrigado a Luis Mendo por jogar 8 bytes de desconto!
Explicação:
A diferença de conjunto simétrico fornecerá todos os elementos presentes em exatamente um dos dois conjuntos de entrada. (mas não ambos) Isso sempre dará a resposta correta, pois o conjunto de entrada sempre será um subconjunto do segundo conjunto (todos ASCII imprimíveis).
Versão original:
Explicação:
fonte
Braquilog , 5 bytes
Experimente online!
Explicação
fonte
JavaScript (ES6), 74 bytes
Tenho certeza de que há uma maneira mais curta de fazer isso!
Tente
fonte
Array(95)
para incluir os desaparecidos~
}
quando eu escrevi isso. Corrigido agora, obrigado.String.fromCharCode
é um git, é por isso! : D~
que não mudava nada, mas estava nas especificações. Além disso, a parte "Experimente" precisa ser atualizada.Bater ,
47 4340 bytesExperimente online!
Gera intervalo hexa, inverte hex dump para char e remove os caracteres presentes no primeiro parâmetro.
fonte
Oitava,
2220 bytesGraças a @Luis Mendo, foram salvos 2 bytes.
Experimente online!
Outra resposta:
Experimente online!
fonte
@(s)setxor(' ':'~',s)
salva 1 byte@(s)setxor(32:'~',s)
parece funcionar também --- e mesmo comentário para esse :-)PHP, 42 bytes
Entrada como matriz
Saída como string
Experimente online!
PHP, 53 bytes
Entrada como string
Saída como string
substituir
<?=join
comprint_r
uma saída como matrizExperimente online!
fonte
Step 1: automatic starting tag
bemphp -r
... mas, por exemplo, neste exemplo, não compensa porqueecho
é maior que<?=
.CJam , 8 bytes
Onde
␡
está um caractere de exclusão literal.Experimente online!
fonte
-
funciona em vez de^
.Perl, 39 bytes
Corra com
perl -pe
.fonte
echo 'Hello World!' | perl -pe 's!.*!"pack(c95,32..126)=~y/$_//dr"!ee'
. Isso funciona para mim no Perl v5.14 e v5.24.brainfuck , 120 bytes
Experimente online!
Embrulhado:
Explicado:
fonte
Ohm , 3 bytes
Experimente online!
Nota: você também pode inserir sua entrada como uma sequência ( exemplo ), mas ela falhará no caso de entrada vazio.
fonte
Ruby,
231817 bytesUsa uma função lambda de acordo com os comentários de @ sethrin.
Versões prévias:
fonte
s
precisa ser lido do STDIN ou fornecido como argumento de função? O desafio também especifica que a entrada pode ser fornecida como uma matriz de caracteres. Convertendo para um lambda stabby e soltandochars
fornece uma solução de 16 bytes.->(s){[*' '..?~]-s)}
stdin
ligaram a uma variável global. Em Ruby,$<
é um atalho para,stdin
mas as lambdas tendem a ser mais curtas. As convenções sobre entrada e saída estão aqui . Eu também não faço muito, então se as regras não forem o que eu acho, me avise.APL, 13 bytes
Direto:
fonte
R , 50 bytes
retorna uma função anônima. Converte a sequência de entrada em números inteiros, calcula a diferença definida entre o intervalo imprimível e os valores de entrada e, em seguida, converte-os novamente em uma sequência e a retorna.
Experimente online!
fonte
PHP, 53 bytes
Corra como cano com
-r
.fonte
C #,
7471 bytesVersão antiga com a criação de um intervalo para 74 bytes:
fonte
05AB1E ,
54 bytes-1 graças a Emigna
Experimente online!
fonte
V , 20 bytes
Experimente online!
Hexdump:
fonte
C (gcc) ,
7572706850 bytesExperimente online!
fonte
||
para fazer esse trabalho em C "padrão"??:
é uma extensão GNU. Mas também funciona em clang e tcc.Gelatina , 8 bytes
Sério, 8 bytes? Por favor, diga-me que perdi alguma coisa!
Experimente online!
Quão?
alternativamente
Desde esse desafio, um novo átomo que produz todos os caracteres ASCII imprimíveis
ØṖ
, foi introduzido, fazendo o seguinte trabalho por 3 bytes:fonte
Carvão ,
1815108 bytesExperimente online! Link é a versão detalhada do código. Editar: salvou 3 bytes, passando por caracteres em vez de números inteiros. Salvei mais 5 bytes quando descobri a
γ
variável não documentada que contém os caracteres ASCII imprimíveis. Economizou mais 2 bytes quando as entradas predefinidas corrigidas apenas pelo @ ASCII no modo detalhado (a resposta ainda é válida como está, é apenas o link do try it online que não teria funcionado no momento).fonte
Mathematica, 35 bytes
Função anônima. Pega uma lista de caracteres como entrada e retorna uma lista de caracteres como saída.
fonte
Lua, 78 bytes
fonte
shortC , 33 bytes
Conversões feitas neste programa:
A
->int main(int argc, char **argv) {
O
->for(
@
->argv
P
->putchar
));}
O programa resultante se parece com:
Experimente online!
fonte
Pitão , 17 bytes
A abordagem ingênua.
Explicação:
Teste online!
fonte
Clojure, 60 ou 49 bytes
Esses "aplicativos" estão me matando: / Oh, se retornar uma lista é bom, então isso é um pouco menor.
fonte