Desde que um dígito entre 0 e 9 (inclusive), sua função / sub-rotina imprima todos os números entre -100 e 100 (inclusive) que contenham o dígito fornecido.
Por exemplo:
Input: 9
Output: -99 -98 -97 -96 -95 -94 -93 -92 -91 -90 -89 -79 -69 -59 -49 -39 -29 -19 -9 9 19 29 39 49 59 69 79 89 90 91 92 93 94 95 96 97 98 99
Regras:
- Você não pode usar seqüências de caracteres (de qualquer maneira que elas estejam representadas no idioma escolhido) ou matrizes de caracteres. (Exceto para imprimir a resposta no console.)
- Você não pode usar matrizes.
Pontuação:
Pontuação = duração da sub-rotina / função (o espaço em branco não será contado)
A resposta com a menor pontuação vence.
Espaço em branco NÃO será contado. Formate seu código corretamente!
Algumas respostas estão usando expressões regulares, o que pode violar a regra no strings, como apontado por alguns membros. Essas respostas não serão aceitas.
Teste seu código 0
antes de postar.
Respostas:
Espaço em branco, 834 caracteres (0 se você subtrair espaços em branco)
Utilizou este intérprete para testá-lo.
Isso levou cerca de 4 horas de trabalho duro e depuração horrível para criar. Mas está feito!
EDIT : Texto selecionável fornecido com truques em HTML. Se você copiar e colar daqui para outro lugar, verifique se chegou exatamente
[space][tab][linefeed][linefeed][linefeed]
ao final com 100 ou 101 linhas (dependendo se o seu editor conta ou não uma nova linha se o último terminar com um avanço de linha).No caso de você não poder usá-lo dessa maneira, considerando espaço como
S
, avanço de linha comoL
e tabulação comoT
e quebrando linhas após osL
, aqui está:fonte
Bash + utils - 20
Ou 21 bytes se em um script
Para executar o script:
fonte
grep
não ébash
oush
. É outro utilitário!JavaScript 133 - 1 = 132
Certamente não poderia haver nada de errado com esta versão agora ...?
fonte
for(i=-100,r=prompt();101>i;i++)(i+'').match(r)&&console.log(i)
.alert(RegExp(9).test(99))
que é baseado apenas em números, também retornatrue
devido ao sistema de digitação frouxamente baseado em JavaScript. As funções funcionam com os números como se fossem strings, mas ainda são números ... Se você alterar o código para lerr=RegExp(x=+prompt());for(i=-100;101>i;i++)r.test(i)&&console.log(i);console.log(typeof(x));console.log(typeof(i))
e executá-lo, o tipo final de resposta será exibidox
ei
como sendo números ... Portanto, não estou usando strings ...GolfScript [24 bytes]
Descrição:
DEMO: http://golfscript.apphb.com/?c=MwoKYDp4OzIwMSx7MTAwLX0le2B4Py0xPn0sYA%3D%3D
fonte
Ruby: 92 caracteres
Versão legível:
Exemplo de execução:
Execução de teste:
fonte
0
teste.K - 45 char
Não ganhando nenhum prêmio, mas o golfe K está sub-representado. K não fica mais bonito com espaçamento adequado, então deixarei como está, porque K fica muito exigente sobre qual espaço em branco é importante e o que não é.
Explicado:
a:100-!201
- Faça uma lista de 0 a 200 inclusive, e subtraia-a de 100. Agora temos os números de -100 a 100 inclusive, mas ao contrário das especificações da pergunta. Sempre podemos consertar isso mais tarde, então, por enquanto, atribuiremos isso aa
._ _abs
- Tome como base o valor absoluto desses números, porque, por qualquer motivo, K pensa que_abs
deva dar resultados de ponto flutuante. Felizmente, pavimentá-los os transforma em números inteiros.10_vs'
- Expanda cada'
número inteiro ( ) como um número base 10 (_vs
significa "vetor do escalar"). Observe que não precisamos usar o operador Each'
nas funções acima, porque elas operam em átomos.@[...;100;0,]
- Altere o item da nossa lista no índice 100 (uma lista vazia, que é o resultado da expansão de 0 para a base 10) pela função0,
, que antecede um zero à frente. Sem essa correção, esta função falhará na entrada 0.&x in'
- Agora, retorne os índices (&
) ondex
está um dígito em (_in
) cada ('
) das expansões que construímos com tanto cuidado acima.|a@
- Por fim, use esses índices para indexara
e inverta a lista na ordem correta.O uso é óbvio, apesar de boa sorte colocar um intérprete em K. (Existe uma implementação de código aberto no Github que você pode compilar.)
fonte
bater
5549 caracteres:(sem contar espaços em branco
&&
)Executando-o dizendo:
produziria:
fonte
;
em novas linhas e economizar 2 pontos.PHP 67 bytes:
Sim, há uma chamada de "strpos", mas estou usando apenas números!
Aqui está uma versão 'ungolfed':
Para que isso funcione, você pode testá-lo aqui: http://writecodeonline.com/php/
Lembre-se de adicionar
$_GET[n]='<number>';
ao início do código.Ou, em um servidor lamp ou xampp, você pode criar uma página e acessá-la no navegador, com o parâmetro
?n=<number>
após o nome do arquivo.fonte
Mathematica 28
Desculpe, eu simplesmente não pude resistir.
:)
As instruções são: "Desde que um dígito entre 0 e 9 (inclusive), sua função / sub-rotina imprima todos os números entre -100 e 100 (inclusive) que contenham o dígito fornecido".
A seguir, imprime todos esses números em ordem.
Como um bônus especial, ele imprime esses números no mesmo intervalo que não contêm o dígito especificado. :)
fonte
Minha primeira tentativa aqui, então talvez eu esteja fazendo algumas coisas erradas, desculpe;)
Então, eu não tinha certeza se tinha que adicionar toda a classe ou apenas a lógica interna.
Java - 199 caracteres
Aqui uma forma mais legível:
Eu acho que a idéia básica não era tão ruim, mas precisava de muitas exceções, para finalmente funcionar em todos os casos ...: /
fonte
0
:(intx
... não deveria serint x
:?C -
104107114 caracteres - 0 =104107114Ungolfed:
fonte
0
contém0
.R 87
93Aqui está uma melhoria:
(Potencialmente) Mais legível, com notas:
fonte
0
.0
. Você tentou com esta versão mais recente? Estou usando o R 3.0.1.Prolog: 75
fonte
test.pl
arquivo, inicieiswipl
, entreiconsult('test')
e entreif(9)
. Mas só voltoufalse
.Resposta C em 98 caracteres
Esta é uma das coisas mais sexy que eu já codifiquei
A versão mais antiga, com 104 caracteres não em branco:
"Funciona para mim" usando o GCC e o CLANG.
fonte
Coreutils GNU (44)
onde
tr
é usado para converter novas linhas em espaços eecho
fornece uma nova linha final.fonte
Javascript 116
fonte
J - 27 caracteres
Todo o espaço em branco é removível com segurança, o que significa 27 caracteres. Os números negativos na saída terão
_
um sinal negativo: é exatamente assim que J escreve seus números negativos.Explicado:
V & (i: 100)
- Vincule (&
) o conjunto de números de -100 a 100 inclusive (i:100
) como o argumento correto do verbo principal (V
). O argumento único do verbo inteiro é canalizado para o lado esquerdo.(U"0 # ])
- Use o resultado do verboU
sobre cada número do argumento correto ("0
) para selecionar (#
) itens do argumento correto (]
).(e. 10 #.^:_1 |)
- Dado o dígito a ser testado como argumento à esquerda e o número a ser verificado como argumento correto, expanda na base 10 (10 #.^:_1
) o valor absoluto do número (|
) e verifique se o dígito é um elemento dessa expansão (e.
).Uso:
fonte
-
Negate / Minus. K permite que você use o sinal negativo "naturalmente" em números, e aliás K saiu como um clã arcada sintática. Se está realmente irritando você, trabalhe na sua escolha;8!:1
,'4.0'8!:2
ou'-'I.@:=&'_'}":
, custando 7, 11 e 16 caracteres, respectivamente para fazer o programa resultante de uma função em vez de uma expressão, pelas minhas contas.Groovy, 127
Sem strings (exceto para produzir os espaços entre os números), sem matrizes de caracteres ou outras matrizes, sem expressões regulares. Testado com 0. Saída:
-100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100
fonte
Javascript - 108
Não tenho certeza se a resposta javascript existente será levada em consideração porque ela usa regex, então criei uma sem ela:
Também pode ser reduzido para 101 se a variável x for colocada diretamente, como:
Ele basicamente verifica se os valores absolutos das operações div ou mod são iguais ao dígito (que também funciona para 100).
fonte
x=1
, isso não imprimir-100
ou100
.1
funciona muito bem, mas agora0
impressões1
,2
,3
... Desculpa ser um causador de problemas aqui.prompt()
retorna string, então adicionei * 1 e espero que deva estar ok agora. Obrigado por suas sugestõesparseInt(j/10)
pode ser substituído pelo(0|j/10)
qual é mais curto e evita as seqüências implícitas. A conversão (inevitável) de sequência de caracteres em númeroprompt()*1
não pode ser reduzida como+prompt()
. (Ou mais curto ainda, altere a função para iniciarfor(x=+prompt(i=-100);...
.GW Basic: 107 caracteres, excluindo espaço em branco
Usar dígitos únicos para os números de linha ajuda e eliminar o espaço em branco significa que não há realmente a necessidade de ter várias instruções em uma linha mais de uma vez para manter os números chegando a 10.
fonte
GROOVY, 71
Resulta em
fonte
Javascript 96
Usando bit a bit ou:
fonte
Haskell,
8675 (78 com espaços em branco necessários)Ungolfed:
fonte
a 0=[-100....
ea d=[b|b<-....
você pode se livrar doif then else
e economizar alguns bytes.Python - 172 caracteres
Para testar no Python:
fonte
VBA 121
(nenhum espaço em branco ou
Sub
definição é contado):fonte
0
?IIf(d = 0, IIf(d = n Mod 10, " " & n, "")
perl, 117 com caracteres de espaço em branco não significativos removidos
Eu acho que você estava procurando algo mais parecido com isto. Lê de stdin, gera uma linha por partida. Sem regexps, matrizes (ou conjuntos ou hashes ou qualquer outra coisa que seja uma matriz oculta) ou cadeias, implícitas ou não, exceto as cadeias transmitidas para impressão:
por exemplo:
fonte
F #
8792 - 7adicionou 5 caracteres porque 0 não foi tratado corretamente. (Todos os valores de um dígito seriam retornados.)
fonte
Esta é a minha primeira vez jogando código de golfe. Isso parece bem interessante. Não posso vencer, mas tentei e queria mostrar o que poderia fazer.
Python: 104 (89 se eu puder mulligan a importação) - se os resultados tiverem que ser impressos exatamente como mostrado no exemplo
Python: 71 - se a saída puder ser executada fora da função e a única restrição para a saída é que nenhum número violador é impresso
fonte
JavaScript 125 char
Desculpe pelas várias edições que tenho tido problemas ao fazer isso no meu telefone :)
fonte
Dogelang, 42 caracteres que não são em branco
O mesmo que minha solução Python, convertida em dogelang .
fonte