Papai Noel precisa de ajuda para determinar quantos elfos ele precisará para ajudá-lo a entregar presentes para cada casa.
O carvão é consideravelmente mais pesado que os presentes, portanto, o Papai Noel precisará de três elfos para cada pessoa travessa da casa. Apenas dois elfos são necessários para ajudar o Papai Noel a levar presentes.
No mapa de santa, uma casa é representada por a *
, e cada casa é dividida por a +
.
Haverá um número em ambos os lados da casa - o da esquerda representando o número de pessoas malcriadas na casa e o da direita representando o número de pessoas legais na casa. Se não houver um número em um lado, ele será interpretado como um 0.
O Papai Noel não visita aqueles que não estão no espírito natalino (eles nem merecem carvão); portanto, às vezes, uma casa pode não ter um número em ambos os lados. Nesse caso, o Papai Noel não precisa da ajuda de nenhum elfo
Por exemplo, um dos mapas do Papai Noel pode ser assim
1*3+2*2+1*+*2
Na primeira casa há 1 safado e 3 agradáveis, o Papai Noel precisará de nove elfos. No segundo, existem 2 safados e 2 legais, o Papai Noel precisará de dez elfos. Na terceira casa tem 1 safada e 0 legal, o papai noel vai precisar três elfos, e na última casa há 0 impertinente e 2 legais, o Papai Noel precisará de quatro elfos.
Esta é uma versão simplificada de um dos mapas do Papai Noel. Normalmente, os mapas do Papai Noel têm várias linhas e têm uma forma quadrada para melhor se encaixar na lista dele. Um mapa normal pode se parecer com isso (a \n
no final de cada linha)
1*2+*+*4+1*
2*4+3*+1*6+*
*+*+4*2+1*1
*4+*3+1*+2*3
3*10+2*+*5+*
Neste mapa, o Papai Noel precisa ((1 + 0 + 0 + 1 + 2 + 3 + 1 + 0 + 0 + 0 + 4 + 1 + 0 + 0 + 1 + 2 + 3 + 2 + 0 + 0) * 3) + ((2 + 0 + 4 + 0 + 4 + 0 + 6 + 0 + 0 + 0 + 2 + 1 + 4 + 3 + 0 + 3 + 10 + 0 + 5 + 0) * 2)
= 151 elfos
Desafio
Ajude o Papai Noel a determinar quantos elfos ele precisa para entregar mercadorias em cada casa!
Moradias
- Uma casa é representada por um
*
- Casas são divididas por
+
- O número à esquerda da casa simboliza o número de pessoas malcriadas (nenhum número significa 0)
- O número à direita simboliza o número de pessoas legais (nenhum número significa 0)
- Pode haver novas linhas (
\n
) na entrada, que também devem ser tratadas como uma divisão
Elfos
- Papai Noel precisa de ajuda de três elfos para pessoas malcriadas (o carvão é muito mais pesado que os presentes)
- Papai Noel precisa da ajuda de dois elfos para pessoas legais
- Se não houver número de cada lado, o Papai Noel não visitará a casa e, portanto, não precisará de elfos.
O que fazer
Imprima o número de elfos que o Papai Noel precisa para ajudá-lo a entregar presentes às casas. Como tudo que o Papai Noel precisa saber é quantos elfos levar, você só precisa imprimir o número adicional de elfos que ele precisa para a lista de casas.
Casos de teste
1*1 => 5
1*2 => 7
2*1 => 8
1* => 3
*1 => 2
* => 0
1*1+1*1 => 10
1*2+2*1 => 15
1*+*1 => 5
1*1+*+1*1 => 10
*+*+*+* => 0
Regras
- A entrada pode ser tomada como argumento em uma função ou em STDIN ou equivalente
- A saída pode ser o valor de retorno de uma função ou impressa em STDOUT ou equivalente
- A entrada conterá apenas números,
+
,*
, e novas linhas\n
- A saída deve ser apenas o número total de elfos dos quais o Papai Noel precisa de ajuda para entregar no Natal
- Aplicam-se brechas padrão
Pontuação
O trenó do Papai Noel está cheio de presentes, dando-lhe menos espaço para executar o código, então ele precisa do código mais curto possível (não se preocupe se isso não fizer sentido. Se você questionar a lógica do Papai Noel, você terminará na lista impertinente ) Devido ao raciocínio CORRETO do Papai Noel , o menor envio em bytes vence!
Entre os melhores
Este é um snippet de pilha que gera um placar de líderes e uma visão geral dos vencedores por idioma.
Para garantir que sua resposta seja exibida, inicie sua resposta com um título, usando o seguinte modelo de remarcação
## Language Name, N bytes
Onde N é o tamanho, em bytes, do seu envio
Se você deseja incluir vários números no seu cabeçalho (por exemplo, localizar pontuações antigas ou incluir sinalizadores na contagem de bytes), verifique se a pontuação real é o último número no cabeçalho
## Language Name, <s>K</s> X + 2 = N bytes
max(naughty) + max(nice)
elfos para toda a rota? Eu pensei que ele tinha um monte de elfos voando com ele, mas talvez você tenha informações privilegiadas sobre isso e eu preciso olhar mais de perto este ano. :)hello-world.c
. Os elfos trabalhadores são alocados ansiosamente aos alvos, como Jojodmo disse (tenho certeza de que conheço Jojodmo, ele deve ser nosso administrador de sistemas) e, em seguida, usamos um retorno de chamada para notificar quando é hora de ser reinserido na piscina de trenós ou quando uma criança os viu.Respostas:
Pitão, 21 bytes
Exemplo de várias linhas
Conjunto de teste de linha única
fonte
JavaScript (ES6), 52 bytes
Explicação
Converte a entrada em uma instrução JavaScript válida. Substitui todos
*
por.0*3+
e todos os outros símbolos (sem dígito) por.0*2+
. Por exemplo,8*9+*10
torna-se8.0*3+9.0*2+.0*3+10
. Finalmente, ele anexa.0*2
ao final a última contagem legal. Isso funciona porquen.0
=n
e.0
=0
.Teste
Mostrar snippet de código
fonte
.0
ideia.Flex + C,
11290 bytesO primeiro caractere é um espaço. Ajuntar com:
Lê de STDIN, grava em STDOUT. A entrada é finalizada por EOF (Ctrl + D no console).
fonte
Mathematica, 70 bytes
Usa
StringExtract
para extrair os números individuais.fonte
CJam, 23 bytes
Teste aqui.
Explicação
fonte
Sério,
3830 bytesHex Dump:
Esta nova versão interrompe o intérprete online, mas funciona bem localmente. Aqui está um exemplo de execução:
Explicação:
Versão antiga:
Hex Dump:
Experimente Online
Explicação:
Talvez isso pudesse ser mais curto se eu apenas convertesse cada linha separadamente e as somasse no final. Vou dar uma olhada mais tarde.
fonte
PowerShell, 52 bytes
Usando variação de user81655 's
.0
truqueVersão ungolfed
Exemplo de uso
fonte
Swift 2,
283211 bytesIsso pode ser testado no SwiftStub, aqui
Ungolfed
fonte
Python 3,
141114112 bytesAceita entradas de várias linhas como esta
c("1*2+*+*4+1*\n2*4+3*+1*6+*\n*+*+4*2+1*1\n*4+*3+1*+2*3\n3*10+2*+*5+*")
Ungolfed:
fonte
Estou super atrasada, mas queria tentar de qualquer maneira.
Ruby ,
8455 bytesEncontrei essa pergunta novamente depois de tantos anos e estava pensando em uma nova resposta antes de perceber que já tinha respondido isso antes. Ops! De qualquer forma, aqui está uma resposta drasticamente melhorada.
Experimente online!
Resposta antiga de 84 bytes de quando eu respondi pela primeira vez há 2 anos:
Experimente online!
fonte
Python 3 , 96 bytes
Experimente online!
101 bytes sem regex
Experimente online!
fonte