Introdução
Quase todo mundo está familiarizado com o Problema do Vendedor Viajante (TSP). A tarefa é, dada uma lista de N
cidades, encontrar o ciclo hamiltoniano mínimo , ou seja, o caminho mais curto que visita cada cidade e volta ao início. Não é disso que se trata esse desafio. Esse desafio é implementar a solução de Chuck Norris para o TSP:
Chuck Norris resolveu o problema do Vendedor
O(1)
ambulante a tempo: dividir o vendedor em N pedaços; chute cada peça para uma cidade diferente.
Desafio
Para resolver o TSP dessa maneira, precisamos de um vendedor suficientemente durável que não evite frivolidades como desmembramento; um número de cidades para visitar; um conjunto de produtos para vender; um método concreto de desmembramento; e um cálculo para pontuação.
Especificação
- Cidades
N
é o número de citações que nosso vendedor visitará
- Vendedor
- O programa ou função principal
- Escrito no idioma
X
- Com comprimento mod
N
igual a0
- Produtos
- Desmembramento
- Fatiar o vendedor em
N
pedaços contínuos de igual comprimento - Cada peça deve ser uma função ou programa válido na linguagem
X
- Fatiar o vendedor em
- Resultado
- Quando executado, o Vendedor deve produzir
Chuck Norris
e as peças fatiadas devem produzir um produto distinto - Apenas espaço em branco à direita é aceitável
- Quando executado, o Vendedor deve produzir
- Pontuação
- O comprimento
L
,, do Vendedor em bytes dividido pelo número de cidadesN
, ao quadrado. Score = L/(N*N)
- Menor pontuação ganha
- Inclua 3 números significativos ao publicar sua pontuação decimal
- O comprimento
Exemplos
- Este vendedor visita três cidades
N=3
e tem 9L=9
. Assim, a pontuação para esta resposta seriaS = 9 / (3 * 3) = 9/9 = 1
.- Observe que o Vendedor e cada peça fatiada (dos quais existem 3) devem ser programas ou funções válidos no mesmo idioma.
Program -> Output
------- ------
aaaBBBccc -> Chuck Norris
aaa -> Helium
BBB -> Iridium
ccc -> Tennessine
N=4
eL=20
assimS=20/16=1.25
Program -> Output
------- ------
aaaaaBBBBBcccccDDDDD -> Chuck Norris
aaaaa -> Hydrogen
BBBBB -> Cadmium
ccccc -> Mercury
DDDDD -> Iron
code-challenge
source-layout
NonlinearFruit
fonte
fonte
ElementData
permitidos embutidos como o Mathematica ? (Eu duvido que vai economizar muito, mas eu não sei.)Respostas:
CJam, L = 1482, N = 114, pontuação 0,114
Experimente online!
Cada programa tem 13 bytes. Aqui eles são divididos em linhas individuais:
Os elementos ausentes são Darmstadtium, Praseodymium, Protactinium e Rutherfordium, com 12 ou 13 caracteres, o que significa que não posso imprimi-los em 13 caracteres cada.
A idéia é que os primeiros programas, que imprimem os elementos com nomes abreviados, usem seus caracteres estranhos para criar a sequência
Chuck Norri
na variávelL
, o que não afeta a saída quando usados por si próprios. O programa final verifica se algo já está na pilha e o utiliza para escolher entreL
(maiss
) eXenon
.Alguns bytes adicionais são salvos usando o caractere ao qual acabamos de adicionar
L
como parte do nome do elemento, especificamente paraC
arbon,N
ickel, Copper
e Silver
.fonte
Python, L = 2596, N = 118, Pontuação = 0,186
O comprimento de cada fatia é 22 , o que torna isso bastante longo.
Aqui está o vendedor depois de fatiar e picar:
Atualizar
fonte
lambda:"Actinium";print""
o Actinium? Talvez isso seja particular do Python 3?Actinium
. Aprint ""
não faz nada de útil após o vendedor foi desmembrado.