Evite repetir cartas entre cinco programas simples

12

Seu desafio é escrever 5 programas completos diferentes para as 5 seguintes tarefas:

  1. Impressão Hello, World!

  2. Dada uma entrada com STDIN, imprima o fatorial, você pode assumir que a entrada é um número inteiro> = 0

  3. Dado um número inteiro N, calcule a soma dos números primos <= N

  4. Dada uma entrada com STDIN, imprima as letras usadas na entrada. Por exemplo: a entrada é Hello world, você precisa produzir helowrd. Observe que a saída está em minúscula. Você pode assumir que a entrada é sempre alfabética com espaços em branco, os espaços em branco são ignorados.

  5. Produza o seguinte diamante exatamente assim:

       *
      ***
     *****
    *******
     *****
      ***
       *
    

Todos esses desafios são provavelmente muito fáceis, mas há um problema. Todas as letras que você usa não podem ser usadas novamente nos outros programas. Isso não é proibido, mas você receberá uma penalidade de +8 bytes . Por exemplo, se este é o seu programa para a primeira tarefa:

print("Hello, World!");

Então você não pode usar as seguintes letras (maiúsculas ou minúsculas forma): p, r, i, n, t, h, e, l, o, w, dnos outros programas. Se você precisar usá-los, poderá "comprar" cada letra por 8 bytes. Portanto, se você quiser usar a letra lnovamente em outro programa, receberá uma penalidade de 8 bytes. Depois de pagar a penalidade, você pode usar cada letra o quanto quiser neste programa. Outros personagens não importam. Além disso, todos os 5 programas devem estar no mesmo idioma.

Este é o , pelo que ganha menos quantidade de bytes!

Adnan
fonte
3
Essa é uma visão um pouco diferente dos desafios que já enfrentamos, mas não o suficiente para que não seja uma bobagem aos meus olhos.
Mego
3
@Mego Eu votaria para fechar isso como uma duplicata múltipla sem a restrição, mas a restrição o torna um jogo totalmente novo.
Trichoplax
1
Se você usa uma determinada letra em 3 programas, paga a penalidade de 8 bytes duas vezes (16 bytes)?
Trichoplax
1
@trichoplax, sim, você paga 16 bytes
Adnan
1
@trichoplax Dificilmente. As soluções existentes para os problemas enganados ainda serão competitivas. As principais soluções aqui serão apenas a concatenação das soluções das perguntas enganadas, com uma pontuação maior da penalidade.
Mego

Respostas:

10

CJam, 73 bytes

"Obkkh+'Phukc&"7f^
q~m!
ri){'j3+_3++~},:+
lS-el_&
4{_' *4@-Y*('**+}%_1>W%\+N*

Cada linha é um programa completo. Experimente online: 1 | 2 | 3 | 4 | 5

Mapa de cartas

 bc  f h  k   op    u       18
            m   q            4
        ij       r          17
    e      l      s          7
             n        w y   27

Se desejar (e cada um de seus programas se encaixar em uma linha), você poderá usar este programa CJam para criar um mapa de cartas para seu próprio envio.

Dennis
fonte
Prova de que o osascript não foi criado para isso: todo o seu envio é inferior a 2 dos meus programas. XD +1, bom trabalho.
Addison Crump #
4

Pitão, 90 bytes

Primeira tentativa...

Tarefa 1: 20 bytes

+"Hello, "+C87"orld!

Tarefa 2, 3 bytes

.!Q

Tarefa 3, 9 bytes

sf}TPTSvz

Tarefa 4, 6 + 8 = 14 bytes

@G{rw0

Tarefa 5, 44 bytes

"   *
  ***
 *****
*******
 *****
  ***
   *
lirtosiast
fonte
3

osascript, 759 bytes

Eu sabia que isso ia ser muito quando eu comecei. oo

Tarefa 1: 15 bytes

"Olá Mundo!"

Eu sabia que seria ruim a partir deste ponto.

Tarefa 2: 64 + 8 * 4 = 96 bytes

em executar um
defina o como 1
repita um
defina o como * o
defina a como a-1
fim
o
fim

Oh caramba.

Tarefa 3: 170 + 8 * 13 = 274 bytes

em executar um
defina o como 0
defina t como false
repita com i de 2 a
defina t como true
repita com c de 2 a i-1
se eu modificar c = 0, então defina t como false
fim
se t, então defina o como o + i
fim
fim

Dennis ultrapassou.

Tarefa 4: 225 + 8 * 13 = 329

em executar um
defina o como ""
repita com i nos itens de um
repita com c em caracteres de i
se c não estiver em o então
se o número ASCII de c <91 então
defina o como o & (caractere ASCII de (número ASCII de c + 32))
outro
defina o para o & c
fim
fim
fim
fim
o
fim

...

Tarefa 5: 45 bytes

"*
  ***
 *****
*******
 *****
  ***
   * "

Então sim. Eu sabia que ia perder desde o início. Mas foi interessante, eu estaria interessado em saber se há uma maneira de fazer isso em menos personagens. Mapa de caracteres (fornecido por Dennis):

   de 15
a cdef oi lmnop rstu w 160
a de nop rstu 57
abcdef oi lmnop rstu w 214
                            39.
                             0 0

A contagem de caracteres acima está um pouco diferente - as novas linhas causaram problemas, pois as novas linhas foram contadas.

NOTA: O motivo para não usar coisas semelhantes a's charactersou similares é que o 'caractere deve ser usado ao executar a partir da linha de comando osascript. Se eu tivesse usado ', teria que usar \'ou algo semelhante, o que não teria me ajudado. Além disso, ele só reconhece "como capturadores de cordas, então eu também estava ferrado lá. Mas isso foi divertido.

Addison Crump
fonte
1

NARS2000 APL, 144 bytes (85 caracteres)

Tarefa 1, 21 bytes (17 caracteres)

⎕←"Hello, World!"

Tarefa 2, 10 bytes (4 caracteres)

⎕←!⎕

Tarefa 3, 22 bytes (11 caracteres)

⎕←+/¯2π⍳2π⎕

Tarefa 4, 53 bytes (29 caracteres)

⎕←∪Q[26∣Q⍸⍞∩Q←⎕AV[97+⍳26]∪⎕A]

Tarefa 5, 38 bytes (24 caracteres)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]
Oberon
fonte
1
Esses programas são realmente completos? Não conheço o NARS2000 (e ele não está disponível na minha plataforma), mas todos os dialetos que conheço exigem a atribuição de impressão fora de um REPL.
Dennis
@ Dennis Desculpe, esqueci que eu estava brincando dentro do REPL.
Oberon
Você não tem permissão para gerar espaços à direita para o diamante.
lirtosiast
1

Gelatina , 46 bytes (não concorrente)

“3ḅaė;œ»
Ɠ!
ÆRS
ɠQḲŒl
4Ḷ¤‘+¤ṖṚṭ×”*Fµ4Ḷṭ4ḶṚṖ¤F×⁶+⁸Y

Experimente online! (Copie / cole cada snippet)

Aparentemente, a restrição não restringiu o golfe :) Apenas sugestões para o último, é claro, por favor.

Erik, o Outgolfer
fonte