Escreva um programa que tenha como entrada uma sequência composta por caracteres imprimíveis (ASCII 20-7E) e um número inteiro n
em [2,16] e execute a seguinte modificação na sequência.
- Cada caractere na string é convertido em seu código ASCII (os exemplos dados são em hexadecimal, embora a base 10 também seja aceitável).
- Os códigos ASCII são convertidos em base
n
e são concatenados juntos. - A nova string é dividida em todos os outros caracteres. Se houver um número ímpar de caracteres, o último caractere será removido completamente.
- Os códigos ASCII de impressão (na base 16) são convertidos novamente em seus caracteres, enquanto os códigos ASCII que não são de impressão são removidos.
- A sequência resultante é impressa.
Caso de teste
Entrada
Hello, World!
6
Passos
Hello, World!
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
2002453003003031125222330331030024453
20 02 45 30 03 00 30 31 12 52 22 33 03 31 03 00 24 45
A saída deste programa é E001R"31$E
.
Isso é código de golfe, então as regras padrão se aplicam. O menor código em bytes vence.
code-golf
string
number
printable-ascii
base-conversion
Arcturus
fonte
fonte
7
, a sequênciaJ
passaria pelas etapasJ
->50
->101
->10
->(no output)
, assim como a sequênciaK
ouL
.H
é ASCII 72 (decimal) ou 48 (hex), mas o que eu preciso é de 200 (base 6). Toda a linha 2 no exemplo é inútil e confuso na minha opiniãoRespostas:
Pitão - 22 bytes
Espero jogar muito mais, bem direto.
Experimente online aqui .
fonte
q3l`T
é maravilhoso.fgTd
ser suficiente?CJam, 33 bytes
Recebe entrada no formulário
6 "Hello, World!"
. Teste aqui.Veja a resposta de Dennis para uma solução semelhante, mas melhor, com uma boa explicação.
fonte
Bash + utilitários linux comuns, 118
fonte
printf %s "$1"
paraecho -n "$1"
salvar 2 bytes-e
. Tenteecho -n "-e"
CJam, 24 bytes
Observe que há um caractere DEL (0x7F) entre
'
e,
. Experimente online no intérprete CJam .Como funciona
fonte
DEL
caractere da saída.JavaScript (ES6), 137
147Usando as funções mais detalhadas disponíveis em JavaScript
fonte
x=>x>=
[for(z of ...)if(...)...]
vez demap(...).filter(...)
x=>x>=
passouJulia, 118 bytes
Ungolfed:
fonte
Mathematica, 134 bytes
Se uma função é permitida:
Mathematica, 112 bytes
fonte
TeaScript, 23 bytes
TeaScript é JavaScript para jogar golfe
Relativamente simples, mas deliciosamente curto. Provavelmente posso jogar mais alguns personagens com mais operadores. Alguns outros novos recursos também podem ser usados para reduzir alguns bytes.
Ungolfed && Explicação
fonte
Ruby 92
Teste online aqui .
fonte
Python 2, 174 bytes
Experimente aqui
Não é realmente a melhor ferramenta para o trabalho. Como o Python não tem função de conversão em base arbitrária, eu tive que implementar a minha própria. Isso foi divertido, pelo menos - particularmente encontrar uma expressão [marginalmente mais curta] para os dígitos do que
"0123456789ABCDEF"[n%b]
. Para iterar mais de dois caracteres por vez, descobri que umwhile
loop era um pouco menor que uma abordagem funcional.181 bytes como um programa completo:
fonte
MATLAB, 103 bytes
Eu escrevi uma função k que leva uma string s e um inteiro n como entrada. por exemplo:
dá
A coisa mais irritante que eu tive para contornar é o aparecimento de zeros na conversão para a base n . Tirar esses dados da matriz que seria dividida após cada segundo caractere custa muitos bytes. Não tenho certeza se é possível salvar mais bytes usando essa abordagem.
fonte
PHP - 286 bytes
Coloque a string
$s
e o número inteiro em$b
.Passe o valor para
GET["s"]
.fonte