Evita di ripetere le lettere tra cinque semplici programmi


12

La tua sfida è scrivere 5 diversi programmi completi per le 5 seguenti attività:

  1. Stampa Hello, World!

  2. Dato un input con STDIN, output fattoriale, si può presumere che l'input sia un numero intero> = 0

  3. Dato un numero intero N, calcola la somma dei numeri primi <= N

  4. Dato un input con STDIN, genera le lettere utilizzate nell'input. Ad esempio: l'input è Hello world, è necessario l'output helowrd. Si noti che l'output è in minuscolo. Si può presumere che l'input sia sempre alfabetico con spazi bianchi, gli spazi bianchi vengono ignorati.

  5. Emetti il ​​seguente diamante esattamente come questo:

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

Tutte queste sfide sono probabilmente molto semplici, ma c'è un problema. Ogni lettera che usi non può essere riutilizzata negli altri programmi. Questo non è proibito, ma ti darà una penalità di +8 byte . Ad esempio, se questo è il tuo programma per la prima attività:

print("Hello, World!");

Quindi non è possibile utilizzare le seguenti lettere (in maiuscolo o minuscolo modulo): p, r, i, n, t, h, e, l, o, w, dnegli altri programmi. Se devi usarli, puoi "comprare" ogni lettera per 8 byte. Quindi, se si desidera utilizzare lnuovamente la lettera in un altro programma, si ottiene una penalità di 8 byte. Dopo aver pagato la penalità, puoi usare ogni lettera quanto vuoi in questo programma. Gli altri personaggi non contano. Inoltre, tutti e 5 i programmi dovrebbero essere nella stessa lingua.

Questo è , quindi vince la quantità minima di byte!


3
Questo è un giro leggermente diverso sulle sfide che abbiamo già avuto, ma non abbastanza diverso da non essere un multi-dupe ai miei occhi.
Mego,

3
@Mego voterei per chiudere questo come un duplicato multiplo senza la restrizione, ma la restrizione lo rende un gioco completamente nuovo.
trichoplax,

1
Se usi una determinata lettera in 3 programmi, paghi due volte la penalità di 8 byte (16 byte)?
trichoplax,

1
@trichoplax, sì, paghi 16 byte
Adnan,

1
@trichoplax Difficilmente. Le soluzioni esistenti per i problemi ingannati saranno ancora competitive. Le migliori soluzioni qui saranno solo la concatenazione delle soluzioni delle domande ingannate, con un punteggio più alto dalla penalità.
Mego,

Risposte:


10

CJam, 73 byte

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

Ogni riga è un programma completo. Provali online: 1 | 2 | 3 | 4 | 5

Mappa delle lettere

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

Se lo desideri (e ognuno dei tuoi programmi si inserisce in una riga), puoi utilizzare questo programma CJam per creare una mappa di lettere per il tuo invio.


Prova che osascript non è stato creato per questo: l' intero invio è inferiore a 2 dei miei programmi. XD +1, bel lavoro.
Addison Crump,

4

Pyth, 90 byte

Primo tentativo...

Attività 1: 20 byte

+"Hello, "+C87"orld!

Attività 2, 3 byte

.!Q

Attività 3, 9 byte

sf}TPTSvz

Attività 4, 6 + 8 = 14 byte

@G{rw0

Attività 5, 44 byte

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

3

osascript, 759 byte

Sapevo che sarebbe stato molto quando ho iniziato. oo

Attività 1: 15 byte

"Ciao mondo!"

Sapevo che sarebbe stato male da questo punto.

Attività 2: 64 + 8 * 4 = 96 byte

in esecuzione a
impostare o su 1
ripetere a
impostare o su a * o
imposta a su a-1
fine
o
fine

Oh Dio.

Attività 3: 170 + 8 * 13 = 274 byte

in esecuzione a
impostare o su 0
impostare t su falso
ripetere con i da 2 a a
impostare t su vero
ripetere con c da 2 a i-1
se i mod c = 0 imposta t su false
fine
se t quindi impostare o su o + i
fine
fine

Dennis ≠ superato.

Compito 4: 225 + 8 * 13 = 329

in esecuzione a
impostare o su ""
ripetere con i negli elementi di a
ripetere con c in caratteri di i
se c non è in o allora
se il numero ASCII di c <91 allora
imposta o su o & (carattere ASCII di (numero ASCII di c + 32))
altro
impostare o su o & c
fine
fine
fine
fine
o
fine

...

Attività 5: 45 byte

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

Quindi si Sapevo che avrei perso dall'inizio. Ma è stato interessante, sarei interessato a sapere se c'è un modo per farlo in meno personaggi. Mappa caratteri (fornita da Dennis):

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

Il conteggio dei personaggi sopra è leggermente fuori - le nuove linee hanno causato problemi, poiché le nuove linee sono state contate.

NOTA: il motivo per cui non si usano cose simili a's characterso simili è che il 'personaggio deve essere usato quando si esegue dalla riga di comando di JavaScript. Se avessi usato ', avrei dovuto usare \'qualcosa di simile, che non mi avrebbe aiutato affatto. Inoltre, riconosce solo "come fermacorde, quindi sono stato anche fregato lì. Ma è stato divertente.


1

APL NARS2000, 144 byte (85 caratteri)

Attività 1, 21 byte (17 caratteri)

⎕←"Hello, World!"

Attività 2, 10 byte (4 caratteri)

⎕←!⎕

Attività 3, 22 byte (11 caratteri)

⎕←+/¯2π⍳2π⎕

Attività 4, 53 byte (29 caratteri)

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

Attività 5, 38 byte (24 caratteri)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]

1
Questi sono in realtà programmi completi? Non conosco NARS2000 (e non è disponibile sulla mia piattaforma), ma tutti i dialetti che conosco richiedono l'assegnazione a una stampa esterna a REPL.
Dennis,

@Dennis Spiacente, ho dimenticato che stavo armeggiando all'interno della REPL.
Oberon,

Non è consentito produrre spazi finali per il diamante.
lirtosiast,

1

Gelatina , 46 byte (non competitiva)

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

Provalo online! (Copia / incolla ogni frammento)

Apparentemente, la restrizione non ha limitato il golf :) Solo suggerimenti per l'ultimo, ovviamente, per favore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.