Évitez de répéter des lettres entre cinq programmes simples

12

Votre défi est d'écrire 5 programmes complets différents pour les 5 tâches suivantes:

  1. Impression Hello, World!

  2. Étant donné une entrée avec STDIN, sortie la factorielle, vous pouvez supposer que l'entrée est un entier> = 0

  3. Étant donné un entier N, calculez la somme des nombres premiers <= N

  4. Étant donné une entrée avec STDIN, affichez les lettres utilisées dans l'entrée. Par exemple: l'entrée est Hello world, vous devez sortir helowrd. Notez que la sortie est en minuscules. Vous pouvez supposer que l'entrée est toujours alphabétique avec des espaces blancs, les espaces blancs sont ignorés.

  5. Sortez le diamant suivant exactement comme ceci:

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

Tous ces défis sont probablement très faciles, mais il y a un hic. Chaque lettre que vous utilisez ne peut pas être réutilisée dans les autres programmes. Ce n'est pas interdit, mais cela vous donnera une pénalité de +8 octets . Par exemple, s'il s'agit de votre programme pour la première tâche:

print("Hello, World!");

Ensuite , vous ne pouvez pas utiliser les lettres suivantes (sous forme majuscule ou minuscule): p, r, i, n, t, h, e, l, o, w, ddans les autres programmes. Si vous devez les utiliser, vous pouvez «acheter» chaque lettre pour 8 octets. Donc, si vous souhaitez réutiliser la lettre ldans un autre programme, vous obtenez une pénalité de 8 octets. Après avoir payé la pénalité, vous pouvez utiliser chaque lettre autant que vous le souhaitez dans ce programme. Les autres personnages n'ont pas d'importance. De plus, les 5 programmes devraient tous être dans la même langue.

Il s'agit de , donc le moins d'octets gagne!

Adnan
la source
3
C'est un tour légèrement différent des défis que nous avons déjà eu, mais pas assez différent pour qu'il ne soit pas un multi-dupe à mes yeux.
Mego
3
@Mego Je voterais pour fermer ceci en tant que multi-doublon sans la restriction, mais la restriction en fait un tout nouveau jeu.
trichoplax
1
Si vous utilisez une lettre donnée dans 3 programmes, payez-vous la pénalité de 8 octets deux fois (16 octets)?
trichoplax
1
@trichoplax, oui vous payez 16 octets
Adnan
1
@trichoplax À peine. Les solutions existantes aux problèmes dupés resteront compétitives. Les meilleures solutions ici ne seront que la concaténation des solutions des questions dupées, avec un score plus élevé à la pénalité.
Mego

Réponses:

10

CJam, 73 octets

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

Chaque ligne est un programme complet. Essayez-les en ligne: 1 | 2 | 3 | 4 | 5

Carte des lettres

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

Si vous le souhaitez (et chacun de vos programmes s'inscrit dans une ligne), vous pouvez utiliser ce programme CJam pour créer une carte de lettres pour votre propre soumission.

Dennis
la source
Preuve qu'osascript n'a pas été construit pour cela: votre soumission entière est inférieure à 2 de mes programmes. XD +1, beau travail.
Addison Crump
4

Pyth, 90 octets

Premier essai...

Tâche 1:20 octets

+"Hello, "+C87"orld!

Tâche 2, 3 octets

.!Q

Tâche 3, 9 octets

sf}TPTSvz

Tâche 4, 6 + 8 = 14 octets

@G{rw0

Tâche 5, 44 octets

"   *
  ***
 *****
*******
 *****
  ***
   *
lirtosiast
la source
3

osascript, 759 octets

Je savais que ça allait être beaucoup quand j'ai commencé. oo

Tâche 1:15 octets

"Bonjour le monde!"

Je savais que ça allait être mauvais à partir de ce point.

Tâche 2: 64 + 8 * 4 = 96 octets

sur une course
mettre o à 1
répéter un
définir o sur a * o
mettre a à a-1
fin
o
fin

Oh merde.

Tâche 3: 170 + 8 * 13 = 274 octets

sur une course
mettre o à 0
mettre t à faux
répéter avec i de 2 à un
mettre t à vrai
répéter avec c de 2 à i-1
si i mod c = 0 alors mettre t à faux
fin
si t alors mettre o à o + i
fin
fin

Dennis g a fait du golf.

Tâche 4: 225 + 8 * 13 = 329

sur une course
mettre o à ""
répéter avec i dans les éléments d'un
répéter avec c en caractères de i
si c n'est pas dans o alors
si le nombre ASCII de c <91 alors
mettre o à o & (caractère ASCII de (numéro ASCII de c + 32))
autre
mettre o à o & c
fin
fin
fin
fin
o
fin

...

Tâche 5: 45 octets

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

Donc voilà. Je savais que j'allais perdre depuis le début. Mais c'était intéressant, je serais intéressé de savoir s'il existe un moyen de le faire en moins de personnages. Carte des personnages (fournie par Dennis):

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

Le nombre de caractères ci-dessus est légèrement inférieur - les nouvelles lignes ont créé des problèmes, car les nouvelles lignes n'étaient pas comptées.

REMARQUE: La raison de ne pas utiliser des éléments similaires a's charactersou similaires est que le 'caractère doit être utilisé lors de l'exécution à partir de la ligne de commande osascript. Si j'avais utilisé ', je devrais utiliser \'ou quelque chose de similaire, ce qui ne m'aurait pas aidé du tout. De plus, il ne reconnaît "que les capteurs de cordes, donc j'étais un peu foutu là aussi. Mais c'était amusant.

Addison Crump
la source
1

NARS2000 APL, 144 octets (85 caractères)

Tâche 1, 21 octets (17 caractères)

⎕←"Hello, World!"

Tâche 2, 10 octets (4 caractères)

⎕←!⎕

Tâche 3, 22 octets (11 caractères)

⎕←+/¯2π⍳2π⎕

Tâche 4, 53 octets (29 caractères)

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

Tâche 5, 38 octets (24 caractères)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]
Oberon
la source
1
S'agit-il en fait de programmes complets? Je ne connais pas NARS2000 (et il n'est pas disponible sur ma plate-forme), mais tous les dialectes que je connais nécessitent une affectation à imprimer en dehors d'un REPL.
Dennis
@Dennis Désolé, j'ai oublié que je jouais à l'intérieur du REPL.
Oberon
Vous n'êtes pas autorisé à générer des espaces de fin pour le diamant.
lirtosiast
1

Gelée , 46 octets (non concurrent)

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

Essayez-le en ligne! (Copiez / collez chaque extrait)

Apparemment, la restriction n'a pas restreint le golf :) Juste des suggestions pour le dernier, bien sûr, s'il vous plaît.

Erik le Outgolfer
la source