Neste desafio, você precisa resolver 4 tarefas diferentes usando o mesmo conjunto de caracteres. Você pode reorganizar os caracteres, mas não pode adicionar ou remover caracteres.
O vencedor será o envio que resolverá todas as tarefas usando o menor número de caracteres. Todas as tarefas devem ser resolvidas no mesmo idioma.
Observe que é o menor número de caracteres, não o menor número de caracteres únicos .
Tarefa 1:
Emita os primeiros N
números de cada terceiro número composto . O código de bloqueio abaixo mostra os 19 primeiros números compostos na primeira linha e cada terceiro número composto na linha abaixo.
4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30
4, 9, 14, 18, 22, 26, 30
Se N=5
então a saída deve ser 4, 9, 14, 18, 22
. Você deve apoiar 1<=N<=50
.
Números compostos são números positivos que não são números primos ou 1.
O resultado para N=50
é:
4, 9, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 57, 62, 65, 69, 74, 77, 81, 85, 88, 92, 95, 99, 104, 108, 112, 116, 119, 122, 125, 129, 133, 136, 141, 144, 147, 152, 155, 159, 162, 166, 170, 174, 177, 182, 185, 188, 192
Tarefa 2:
Saída de uma N-by-N
tabela de multiplicação. Você deve apoiar1<=N<=20
Exemplo:
N = 4
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
O formato de saída é opcional, a seguir é aceitável [[1,2,3,4],[2,4,6,8],[3,6,9,12],[4,8,12,16]]
.
Tarefa 3:
Determine se um número é um número de Fibonacci . Você deve oferecer suporte positivo N
até o limite inteiro padrão do seu idioma. Se houver números inteiros de 32 bits e números inteiros de 64 bits, você poderá optar por usar aquele que requer o código mais curto. Por exemplo, use em int
vez de long int
se tiver a opção. Você não pode escolher números inteiros menores que 32 bits, a menos que isso seja padrão (você não pode usar números inteiros de 8 bits se 32 bits for o padrão).
true/false
, false/true
, 1/0
, 1/-1
, a/b
Estão todos de saída aceitável, desde que seja consistente.
Tarefa 4:
Tome N
como entrada e saída o resultado de 1^1+2^2+3^3+...N^N
. Você deve apoiar 1<=N<=10
.
Os 10 resultados diferentes são:
1, 5, 32, 288, 3413, 50069, 873612, 17650828, 405071317, 10405071317
Isso é código-golfe , então a submissão mais curta em cada idioma vence!
Este snippet de pilha ajudará a verificar sua solução. Ele mede o conjunto mínimo de caracteres necessário para incluir todas as quatro soluções e mostra os caracteres restantes.
fonte
Respostas:
Python,
8887 bytesNão se esforçou muito para compartilhar personagens ou os próprios campos de golfe, isso quase certamente será derrotado.
fonte
range(11*n)
sempre conter compósitos suficientes?5*n
é suficiente.Geléia ,
191817 caracteresTarefa 1
Experimente online!
Tarefa 2
Experimente online!
Tarefa 3
Experimente online!
Tarefa 4
Experimente online!
Como funciona
Cada linha em um programa Jelly define um link (função) separado . O último é o link principal e é chamado automaticamente quando o programa é executado. A menos que o link principal faça referência aos outros de alguma forma, eles não terão efeito. Observe que mesmo os links não chamados podem não conter erros do analisador.
Tarefa 1
Tarefa 2
Esse é trivial:
×
é o átomo de multiplicação, e o rápidoþ
(tabela) se aplica×
a cada combinação de elementos no argumento esquerdo e no direito. Se os argumentos forem números inteiros (que estão aqui), também os converterá para o intervalo primeiro.Tarefa 3
Tarefa 4
fonte
ÆḞ
já está provando ser útil!Mathematica, 60 caracteres
Tarefa 1: Compósitos
Tarefa 2: Tabela de multiplicação
Tarefa 3: Fibonacci
Tarefa 4: Soma de poderes
Cada envio é um conjunto de expressões que são ignoradas, seguidas por uma função sem nome que implementa a tarefa especificada.
Eu escrevi um script CJam simples que " otimiza " combina soluções brutas, acrescentando um comentário. Acabei economizando três bytes além disso, livrando-me manualmente de cada comentário (o que exigia alguma reorganização para obter sintaxe válida em cada caso). O script tornou muito mais fácil experimentar variações simples das soluções para ver se elas reduziriam a pontuação geral. Sinta-se livre para usar o script você mesmo.
fonte
ab
eba
como os scripts, ele me dará(**)ab
e(**)ba
, em vez deab
eba
.(**)
ele próprio poderia ser usado para cobrir alguns caracteres se eles fossem usados em qualquer outro programa.MATL ,
292826 caracteresTarefa 1 (todo terceiro número composto)
Experimente online!
Tarefa 2 (tabuada)
Experimente online!
Tarefa 3 (detector de Fibonacci)
Isso exibe
1
/0
para Fibonacci / não Fibonacci, respectivamente.Experimente online!
Tarefa 4 (soma de poderes)
Experimente online!
Verifica
Este programa insere as quatro seqüências e as exibe ordenadas, para verificar visualmente se elas usam os mesmos caracteres.
Explicações
%
é o símbolo do comentário. Tudo à sua direita é ignorado.Tarefa 1 (todo terceiro número composto)
Tarefa 2 (tabuada)
Tarefa 3 (detector de Fibonacci)
Tarefa 4 (soma de poderes)
fonte
Hey MATL would be perfect for this!
você me vencesse. +1Perl 6 , 61 bytes
O segundo retorna
((1,2,3,4),(2,4,6,8),(3,6,9,12),(4,8,12,16))
quando dado4
O Perl 6 não tem realmente um número máximo máximo, mas o terceiro funciona instantaneamente com uma entrada de
15156039800290547036315704478931467953361427680642
. Os únicos fatores limitantes seriam memória e tempo.Caso contrário, todos serão executados "instantaneamente" para entradas muito além do necessário.
Experimente online
fonte
JavaScript (ES6),
101100959391 bytesEdit: Salvo 1 byte, não suportando
0
como um número de Fibonacci. Economizou 5 bytes mais 2 bytes (1 graças a @Arnauld) renomeando variáveis. Economizou 2 bytes alternando entre+1
,++
e+=1
.fonte
c
variável porA
deve salvar um byte.d
comy
, masd
é indefinido na versão atual, então você provavelmente vai querer corrigir isso primeiro)a
param
.MATL , 30 caracteres
O conjunto de caracteres com o qual eu fui é:
Não consegui superar a outra resposta do MATL, mas me diverti com essa solução.
Tarefa 1:
Terceiros números compostos.
Experimente online!
Tarefa 2:
Tabela de multiplicação. Definitivamente a tarefa mais fácil, devido à maneira como o MATL funciona
Experimente online!
Tarefa 3:
Testador de Fibonacci. Imprime um número inteiro positivo (1 ou 2) para entradas verdadeiras e 0 para entradas falsas.
Experimente online!
Tarefa 4:
Soma de poderes
Experimente online!
Postarei uma explicação mais completa mais tarde, mas, por enquanto, você deve observar que
%
é o caractere de comentário, portanto os programas são realmente:fonte
PowerShell ,
9594 bytes( TimmyD salvando meu bacon mais uma vez)
Tarefa 1:
Experimente online!
Tarefa 2:
Experimente online!
Tarefa 3:
Experimente online!
Tarefa 4:
Experimente online!
fonte
"$args"
vez de$args[0]
é brilhante. Eu vou usar isso daqui em diante.;
da Tarefa 4 manipulando o cálculo("$args"..1|%{$s+="$_*"*$_+1|iex})-(-$s)
para salvar outro byte geral.Haskell ,
7776 caracteresExperimente online!
--
inicia uma linha de comentário, para que todos os quatro programas são da forma<program>--<unused chars>
.Tarefa 1:
O programa mais longo.
[x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]
produz uma lista infinita de números compostos mais uma partida1
que corrige a indexação 0. Uso:Tarefa 2:
Uso:
Tarefa 3:
Retorna
[0]
para verdade e[]
para falsidade. Uso:Tarefa 4:
Uso:
fonte
05AB1E , 21 bytes
Tarefa 1
Experimente online!
Tarefa 2
Experimente online!
Tarefa 3
Experimente online!
Tarefa 4
Experimente online!
Explicações
Para todas as tarefas,
q
termina o programa para que o código a seguir nunca seja executado.Tarefa 1
Este é o maior byte-hog. Uma pequena melhoria aqui pode percorrer um longo caminho.
Tarefa 2
Tarefa 3
Tarefa 4
fonte
Ruby,
83 82 8078 caracteresNota: Detector de números de Fibonacci usando o método do quadrado perfeito descrito na Wikipedia: https://en.wikipedia.org/wiki/Fibonacci_number#Recognizing_Fibonacci_numbers
fonte
'';
vs#