Evite repetir letras entre cinco programas simples

12

Su desafío es escribir 5 programas completos diferentes para las 5 tareas siguientes:

  1. Impresión Hello, World!

  2. Dada una entrada con STDIN, emite el factorial, puede suponer que la entrada es un entero> = 0

  3. Dado un entero N, calcule la suma de los primos <= N

  4. Dada una entrada con STDIN, genera las letras utilizadas en la entrada. Por ejemplo: la entrada es Hello world, necesita salir helowrd. Tenga en cuenta que la salida está en minúsculas. Puede suponer que la entrada siempre es alfabética con espacios en blanco, los espacios en blanco se ignoran.

  5. Produzca el siguiente diamante exactamente así:

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

Todos estos desafíos son probablemente muy fáciles, pero hay una trampa. Cada letra que use no puede volver a usarse en los otros programas. Esto no está prohibido, pero le dará una penalización de +8 bytes . Por ejemplo, si este es su programa para la primera tarea:

print("Hello, World!");

Entonces no se puede utilizar las siguientes letras (en mayúsculas o minúsculas) forma: p, r, i, n, t, h, e, l, o, w, den los otros programas. Si tiene que usarlos, puede 'comprar' cada letra por 8 bytes. Entonces, si desea usar la letra lnuevamente en otro programa, obtendrá una penalización de 8 bytes. Después de haber pagado la multa, puede usar cada letra tanto como desee en este programa. Otros personajes no importan. Además, los 5 programas deben estar en el mismo idioma.

Este es el , por lo que gana la menor cantidad de bytes.

Adnan
fuente
3
Este es un giro ligeramente diferente en los desafíos que ya hemos tenido, pero no lo suficientemente diferente como para que no sea un engaño múltiple en mis ojos.
Mego
3
@Mego Yo votaría para cerrar esto como un duplicado múltiple sin la restricción, pero la restricción lo convierte en un juego completamente nuevo.
trichoplax
1
Si utiliza una letra determinada en 3 programas, ¿paga la multa de 8 bytes dos veces (16 bytes)?
trichoplax
1
@trichoplax, sí, pagas 16 bytes
Adnan
1
@trichoplax Apenas. Las soluciones existentes para los problemas engañados seguirán siendo competitivas. Las mejores soluciones aquí serán la concatenación de las soluciones de las preguntas engañadas, con un puntaje más alto de la penalización.
Mego

Respuestas:

10

CJam, 73 bytes

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

Cada línea es un programa completo. Pruébelos en línea: 1 | 2 | 3 | 4 | 5 5

Mapa carta

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

Si lo desea (y cada uno de sus programas encaja en una línea), puede usar este programa CJam para crear un mapa de letras para su propio envío.

Dennis
fuente
Prueba de que el osascript no se creó para esto: su envío completo es inferior a 2 de mis programas. XD +1, buen trabajo.
Addison Crump
4

Pyth, 90 bytes

Primer intento...

Tarea 1: 20 bytes

+"Hello, "+C87"orld!

Tarea 2, 3 bytes

.!Q

Tarea 3, 9 bytes

sf}TPTSvz

Tarea 4, 6 + 8 = 14 bytes

@G{rw0

Tarea 5, 44 bytes

"   *
  ***
 *****
*******
 *****
  ***
   *
lirtosiast
fuente
3

osascript, 759 Bytes

Sabía que esto iba a ser mucho cuando comencé. oo

Tarea 1: 15 bytes

"¡Hola Mundo!"

Sabía que iba a ser malo desde este punto.

Tarea 2: 64 + 8 * 4 = 96 bytes

en ejecutar un
establecer o a 1
repite un
establecer o a * o
establecer a a-1
final
o
final

Oh Dios mío.

Tarea 3: 170 + 8 * 13 = 274 bytes

en ejecutar un
establecer o a 0
establecer t en falso
repita con i de 2 a a
establecer t en verdadero
repita con c de 2 a i-1
si modifico c = 0, establezca t en falso
final
si t entonces establezca o en o + i
final
final

Dennis g outgolfed.

Tarea 4: 225 + 8 * 13 = 329

en ejecutar un
establecer o en ""
repetir con i en elementos de un
repetir con c en caracteres de i
si c no está en o entonces
si el número ASCII de c <91 entonces
establezca o en o & (carácter ASCII de (número ASCII de c + 32))
más
establecer o a o & c
final
final
final
final
o
final

...

Tarea 5: 45 bytes

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

Así que sí. Sabía que iba a perder desde el principio. Pero fue interesante, me interesaría saber si hay una manera de hacer esto en menos personajes. Mapa de caracteres (según lo provisto por Dennis):

   de hlorw 15
a cdef hi lmnop rstu w 160
a de nop rstu 57
abcdef hola lmnop rstu w 214
                            39
                             0 0

El recuento de caracteres anterior está ligeramente desactivado: las nuevas líneas hicieron que tuviera problemas, ya que las nuevas líneas no se contaban.

NOTA: La razón para no usar cosas como a's characterso similares es que el 'personaje debe usarse cuando se ejecuta desde la línea de comandos del osascript. Si lo hubiera usado ', tendría que usar \'o algo similar, lo que no me habría ayudado en absoluto. Además, solo reconoce "como capturadores de cadenas, por lo que también me atornillaron allí. Pero eso fue divertido.

Addison Crump
fuente
1

NARS2000 APL, 144 bytes (85 caracteres)

Tarea 1, 21 bytes (17 caracteres)

⎕←"Hello, World!"

Tarea 2, 10 bytes (4 caracteres)

⎕←!⎕

Tarea 3, 22 bytes (11 caracteres)

⎕←+/¯2π⍳2π⎕

Tarea 4, 53 bytes (29 caracteres)

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

Tarea 5, 38 bytes (24 caracteres)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]
Oberon
fuente
1
¿Son esos programas realmente completos? No conozco NARS2000 (y no está disponible en mi plataforma), pero todos los dialectos que conozco requieren la asignación para imprimir fuera de un REPL.
Dennis
@Dennis Lo siento, olvidé que estaba jugando con el REPL.
Oberon
No tiene permiso para generar espacios finales para el diamante.
lirtosiast el
1

Gelatina , 46 bytes (no competitiva)

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

Pruébalo en línea! (Copie / pegue cada fragmento)

Aparentemente, la restricción no restringió el golf :) Solo sugerencias para la última, por supuesto, por favor.

Erik el Outgolfer
fuente