Cramming The Gramming - Twelve Task Tweet


42

Il tuo capo ti ha appena inviato per e-mail un elenco di 12 attività di programmazione che deve svolgere il prima possibile. I compiti sono abbastanza semplici ma il tuo capo, essendo un giovane magnate del software allattato dai social network, insiste affinché le tue soluzioni possano adattarsi a un singolo tweet di Twitter .

Ciò significa che hai solo 140 byte di codice per risolvere tutte le attività, una media di 11,67 byte per attività. (Sì, Twitter conta i personaggi ma il tuo capo ha detto specificamente i byte.)

Ti rendi conto che non c'è modo di risolvere tutti i 12 compiti in 140 byte, ma sospetti che il tuo capo non testerà effettivamente tutte le tue soluzioni. Quindi si procede a risolvere quante più attività possibile, saltandone completamente alcune. La tua mentalità è che non importa quale sottoinsieme delle attività che completi, importa solo che il sottoinsieme è il più grande possibile .

Quante attività puoi completare?

Sfida

Scrivi fino a 12 programmi diversi, ognuno dei quali risolve accuratamente una delle 12 attività elencate di seguito. La somma cumulativa delle lunghezze di questi programmi non può superare 140 byte

In alternativa, è possibile scrivere un singolo programma lungo non più di 140 byte che impiega un numero intero compreso tra 1 e 12 e (idealmente) procede per risolvere l'attività corrispondente, prendendo più input se necessario. Non tutte le attività devono funzionare, ma solo quelle che contano ai fini del punteggio. Le attività che non funzionano possono eseguire errori o fare qualsiasi altra cosa.

In entrambi i casi, un "programma" può in effetti essere una funzione che accetta l'input come argomento o lo richiede e stampa o restituisce l'output. Quindi, ad esempio, potresti scrivere una funzione di 140 byte che assomigli f(taskNumber, taskInput)o potresti scrivere frammenti di codice separati per ogni attività, alcuni come funzioni e altri come programmi completi.

Altri dettagli:

  • Tutto il codice deve essere scritto nella stessa lingua.

  • Come al solito, l'input dovrebbe provenire da stdin, dalla riga di comando, da un argomento di funzione o da qualsiasi altra cosa consueta per la tua lingua. L'output viene stampato su stdout o l'alternativa più vicina alla tua lingua o restituito in un tipo appropriato.

  • Una ragionevole quantità di formattazione di input va bene; ad es. virgolette attorno alle stringhe o \nanziché alle nuove righe effettive.

  • L'output dovrebbe essere esattamente ciò che viene richiesto senza formattazione o spazi bianchi estranei. L'eccezione è una nuova riga finale singola facoltativa.

  • Il codice che viene eseguito solo in un ambiente REPL non costituisce un programma o una funzione.

  • Non è possibile scrivere più programmi che risolvono più attività. O è un programma che (idealmente) risolve tutti i compiti o (idealmente) 12 programmi che risolvono ciascuno un singolo compito.

  • Non è consentita la pubblicazione di una soluzione di attività che non è stata scritta o modificata solo leggermente senza dare l'attribuzione all'autore originale e ottenere idealmente anche l'autorizzazione. Se la tua risposta compone principalmente le soluzioni più brevi da tutte le altre risposte, dovrebbe essere una wiki della comunità.

punteggio

La proposta che completa la maggior parte delle attività è il vincitore. Se due invii vincolano, vince quello con il minor numero di byte. Se i conteggi dei byte sono collegati, l'invio precedente vince. Le risposte alle wiki della community non possono vincere.

Assicurati di dirci quali attività hai risolto, non solo quante!

Handicap per i non golfisti:

È probabile che questa sfida sarà dominata dalle lingue del golf . Molte lingue potrebbero avere difficoltà a risolvere anche una o due attività entro 140 byte. Pertanto è possibile inviare una risposta non competitiva in cui il limite è di 3 tweet, ovvero 420 byte. Tutte le altre regole rimangono le stesse.

Compiti

Compito 1: tre numeri possono formare un triangolo?

Prendi tre numeri interi positivi e genera un valore di verità / falsità che indica se tre linee con quelle lunghezze potrebbero formare un triangolo . Non puoi presumere che i numeri arrivino in un ordine particolare.

Esempi di verità (uno per riga):

20 82 63
1 1 1
2 3 4
1 2 2

Esempi di falsi:

6 4 10
171 5 4
1 1 2
1 2 3

Compito 2: il più vicino a un milione

Data una stringa di esattamente 7 cifre decimali (0-9), riorganizzale per ottenere un numero il più vicino possibile a un milione. Cioè, abs(1000000 - rearrangedNumber)dovrebbe essere ridotto al minimo.

Stampa o restituisci il numero risultante come numero intero, non come stringa (quindi non dovrebbero esserci zero iniziali a meno che non sia la norma per la tua lingua).

es. un input di 9034318dovrebbe risultare 984331(e non 1033489).

2893984dovrebbe diventare 2348899.

0001000dovrebbe diventare 1000000.

0000020dovrebbe diventare 200000.


Task 3 - Simple Keyboard Simulator

Prendi una stringa di lettere minuscole (az), spazi e parentesi angolari <>. Leggi da sinistra a destra, questa stringa rappresenta i tasti che sono stati premuti su una tastiera standard mentre era aperto un editor di testo inizialmente vuoto. Le lettere e lo spazio corrispondono ai loro tasti normali ma <corrispondono al tasto freccia sinistra e >al tasto freccia destra, entrambi i quali muovono il cursore quando vengono premuti.

<sposta il cursore di un carattere a sinistra o non fa nulla se il cursore si trova all'inizio della stringa.
>sposta il cursore di un carattere a destra o non fa nulla se il cursore si trova alla fine della stringa.

Emette la stringa che sarebbe nell'editor di testo dopo aver premuto tutti i tasti nella stringa di input. Non è consentito emettere codici di escape per spostare il cursore.

Ci sarà sempre almeno un carattere chiave non freccia nell'input.

ad esempio, l'input ui<<q>>ck <<<<<<the<<<<>>> >>>>>>>>brown x<o<fdovrebbe cedere the quick brown fox.

op<<l>>t<<<lam>>>>>>imi<<<><>>>zer<<<<<<<<<<<<<<<<<<>>><>mdovrebbe dare llammoptimizer.

e< <c<b<adovrebbe dare abc e.

<<<>><><<><toast>><<>><><<>><dovrebbe dare toast.


Attività 4 - Lettere FILTHE

In molti font, 6 delle maiuscole lettere alfabeto inglese costituiti interamente da linee orizzontali e verticali: E, F, H, I, L, e T. Chiameremo queste le lettere FILTHE.

Prendi una stringa di lettere maiuscole (AZ) e conta il numero di righe nelle lettere FILTHE, producendo il numero intero risultante.

E, F, H, I, L, E Thanno 4, 3, 3, 3, 2, e 2 linee rispettivamente.

ad esempio GEOBITSha 4 + 3 + 2 = 9 righe parte delle lettere FILTHE (per .E..IT.), quindi l'output dovrebbe essere 9.

ABCDEFGHIJKLMNOPQRSTUVWXYZdovrebbe produrre 17.

ABCDGJKMNOPQRSUVWXYZdovrebbe produrre 0.

FILTHYLINESINLETTERSdovrebbe produrre 39.


Compito 5 - Alex ricorsivo A.

Il nostro moderatore Alex A. ha un'iniziale abbastanza misteriosa, "A".

Ora non ne sono certo, ma penso che lo A.sia .A xelA. E sono anche abbastanza sicuro che .Alì ci sia di soppiatto Alex A..

Quindi, per ottenere il nome completo di Alex, dobbiamo espandere A.'e .A':

Alex A. -> Alex [A.] -> Alex [.A xelA] -> Alex .A xelA -> Alex [.A] xelA -> Alex [Alex A.] xelA -> Alex Alex A. xelA -> etc.

Chiedi al tuo programma di assumere un numero intero non negativo ed espanderlo Alex A.molte volte, producendo la stringa risultante.

Così
0diventa Alex A.,
1diventa Alex .A xelA,
2diventa Alex Alex A. xelA,
3diventa Alex Alex .A xelA xelA,
4diventa Alex Alex Alex A. xelA xelA,
5diventa Alex Alex Alex .A xelA xelA xelA,
e così via.

(L'ho fatto perché mi sono sentito male per aver inavvertitamente lasciato Alex fuori dalla mia sfida tributo alla mod .: P)


Attività 6 - Rotazione del tastierino numerico

Prendi un numero intero compreso tra 1 e 9 incluso (puoi prenderlo come una stringa). Stampa il quadrato di 3 × 3 cifre

789
456
123

ruotato con incrementi di 90 ° in modo tale che la cifra in ingresso appaia ovunque nella riga superiore. Quando 5viene immesso, qualsiasi rotazione è valida poiché non 5può essere ruotata verso l'alto.

ad es. quando 3viene immesso, entrambi

963
852
741

e

321
654
987

sono uscite valide.

Per l'ingresso 4, solo

147
258
369

è un output valido.


Attività 7 - Dividere le cifre in decine

Prendi una stringa non vuota di cifre decimali (0-9) e genera un valore veritiero se può essere suddiviso in sezioni contigue in cui tutte le cifre in ciascuna sezione vengono sommate esattamente a 10. Se ciò non è possibile, genera un valore errato.

ad esempio 19306128può essere suddiviso come 19|3061|28, le sezioni tutte sommando a 10 (1 + 9, 3 + 0 + 6 + 1, 2 + 8), quindi dovrebbe essere emesso un valore di verità.

Esempi di verità (uno per riga):

19306128
073
730
0028115111043021333109010
2222255

Esempi di falsi:

6810410
9218
12341
5222225
000

Task 8 - Orologio quadrato

Accetta una stringa multilinea di dimensioni coerenti.

Uscita 12se l'ingresso è

 _ _
| | |
|_ _|

Uscita 3se l'ingresso è

 _ _
| |_|
|_ _|

Uscita 6se l'ingresso è

 _ _
| | |
|_|_|

Uscita 9se l'ingresso è

 _ _
|_| |
|_ _|

Non ci sono altri casi di input.


Compito 9 - Staffa Art

Prendere in una stringa di 4 byte contenente uno di ciascuno delle staffe a sinistra (, [, {, e <in qualsiasi ordine.

Aggiungi le parentesi destra corrispondenti in modo che la stringa sia lunga 8 byte e abbia una linea verticale di simmetria. ad esempio [<({diventa [<({})>].

Quindi invertire ogni parentesi in questa stringa. ad esempio [<({})>]diventa ]>)}{(<[.

Emette la stringa di parentesi originale da 8 byte con la versione invertita sopra e sotto su righe separate.

Quindi l'output finale per l'input [<({sarebbe

]>)}{(<[
[<({})>]
]>)}{(<[

Allo stesso modo, l'output per <({[dovrebbe essere

>)}][{(<
<({[]})>
>)}][{(<

L'input (<<[non è valido perché {manca e c'è un extra <.


Compito 10 - Perimiterizzare

Prendi una griglia rettangolare di testo (1 × 1 al minimo) fatta di ."s" che rappresentano uno spazio vuoto e Xdi s che rappresentano le tessere solide. Le celle oltre i limiti della griglia sono considerate vuote. Puoi presumere che ciascuna delle 4 righe e colonne del bordo griglia ne contenga almeno una X.

ad esempio un input valido potrebbe essere:

XXX.....X.....
X..X...X.X....
XXX.....X....X

Stampa un'altra griglia rettangolare di testo in cui ogni cella vuota che confina con una Xortogonale o diagonale, comprese quelle esterne alla griglia di input , diventa o. Quindi essenzialmente un perimetro di oè disegnato attorno a tutte le porzioni di piastrelle solide. La nuova griglia non dovrebbe essere più grande di quanto deve essere.

Quindi l'output dell'esempio sopra sarebbe:

ooooo...ooo.....
oXXXoo.ooXoo....
oXooXo.oXoXo.ooo
oXXXoo.ooXoo.oXo
ooooo...ooo..ooo

Allo stesso modo, l'output di input XXX..X.Xdovrebbe essere

oooooooooo
oXXXooXoXo
oooooooooo

e in uscita

oooooooooo.
oXXXooXoXo.
oooooooooo.

sarebbe non valido poiché la colonna vuota più a destra non è necessaria.

È possibile utilizzare qualsiasi 3 distinte ASCII stampabili caratteri al posto di ., Xe o.


Task 11 - Sator Square

Uscita Sator Square :

SATOR
AREPO
TENET
OPERA
ROTAS

Una qualsiasi delle lettere può essere minuscola o maiuscola, quindi

SatOR
aRePO
tenet
OPERa
RoTaS

è anche un output valido.

Non ci sono input.


Task 12 - Prime Tweet

Non accettare input ma emette una stringa ASCII stampabile a 140 byte che contiene almeno uno di ciascuno dei 95 caratteri ASCII stampabili. (Quindi 45 caratteri saranno duplicati.)

La somma dei codici carattere di tutti i 140 byte in questa stringa deve essere un numero primo di Sophie Germain , ovvero un numero primo ptale che 2p+1sia anche primo. Il codice carattere per lo spazio è 32, 33 per !, 34 per "e così via fino a 126 per ~. La somma potrebbe essere calcolata in Python come sum(map(ord, myString)).

Un esempio di output è:

! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d

La somma del codice carattere è il primo 12203 il cui primo sicuro primo è 24407.


7
Sarò impressionato se qualcuno riuscirà davvero a risolvere tutto in meno di 140 byte, anche con CJam /
Pyth

9
Sono onorato di essere in .a ni eb ot deronoh ma io ... la tua sfida. : P
Alex A.

le attività possono terminare con un errore dopo che il risultato è stato stampato sull'output?
Torcado,

1
Come dovremmo contare i byte da imports? Diciamo che scrivo 5 funzioni in cui 2 hanno bisogno dello stesso modulo (es. import Math), Questo viene contato due volte?
nimi,

2
Sto votando per chiudere questa domanda come fuori tema perché si tratta di una sfida in più parti con interazione insufficiente tra le parti
pppery

Risposte:


10

Pyth, 9 task in 136 byte

Attività 1: 7 byte

<-F_SQ0

Dimostrazione

Ordina in ordine decrescente ( _SQ), piega la sottrazione su di essi ( a-b-c), controlla se il risultato è negativo.

Attività 2: 14 byte

sho.a-sN^T6.pz

Dimostrazione

Forma tutte le permutazioni di stringa ( .pz), ordinale ( o) in base al valore assoluto della differenza ( .a-) tra il numero ( sN) e un milione ( ^T6).

Prendi la prima stringa del genere ( h) e convertila in num. ( s).

Attività 4: 19 byte

s/L+\EPP*3"EFHILT"z

Dimostrazione

Replica "EFHILT"tre volte ( *3), rimuovi il trailing LT( PP) e aggiungi un E( +\E). Mappa ogni lettera nell'input al suo conteggio di aspetto in quella stringa. ( /L ... z). Somma. ( s).

Attività 5: 16 byte

u+"Alex "_GhQ".A

Dimostrazione

A partire da "A.", inverti e aggiungi un "Alex "all'inizio, inserisci + 1 volte.

Attività 7: 13 byte

}Y-RTsMM./sMz

Converti la stringa di input in un elenco di numeri a 1 cifra ( sMz). Forma tutte le partizioni ( ./). Somma ogni elemento di ogni partizione ( sMM). Rimuovi tutti i 10 secondi da ciascun elenco secondario ( -RT). Controlla se questo ha svuotato una delle liste secondarie controllando se la lista vuota è nella lista generale ( }Y).

Attività 8: 11 byte

*3h%%CQC\Ç4

Dimostrazione

Modulo magico. Converti in numero ( CQ), prendilo mod 199 ( C\Ç= 199) e prendi quel mod 4. Quindi aggiungi 1 e moltiplica per 3.

Attività 9: 21 byte

J+Xz"<{[()]}>")_zJ_JJ

Dimostrazione

Innanzitutto, generiamo la prima riga, che consiste nell'input tradotto nei caratteri mirror ( Xz"<{[()]}>")), seguito dall'input invertito ( + ... _z) e lo salviamo in J. Quindi stampare quella riga, il suo rovescio e quella riga di nuovo ( J_JJ).

Attività 11: 22 byte

+J"SATOR
AREPO
TEN"t_J

Dimostrazione

Basta stampare una stringa e il suo rovescio, ma non duplicare il centro N.

Attività 12: 13 byte

++G*19\3srd\

Dimostrazione

C'è un carattere invisibile DEL( 7F) alla fine del codice.

Questo stampa

abcdefghijklmnopqrstuvwxyz3333333333333333333 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

che ha la somma dei caratteri 11321. Comprende Gl'alfabeto, 19 3secondi e tutti i caratteri ASCII stampabili.


28

CJam, 8 9 attività in 140 byte

Prima di tutto, ecco uno script che puoi usare per ordinare le tue soluzioni e dirti quali si adatteranno al tweet:

{\s\Se[oSo}:F;
qN/ee{W=,}${)_,_T+:T140>X*_{0:X;}*'=@11+*N+*o\~)YF_,ZFTZFoNo}/

Basta incollare le 12 soluzioni nell'input, una su ogni riga. Eseguilo qui. La prima colonna è il numero dell'attività, la seconda è la sua dimensione (in caratteri - dovrai risolverlo tu stesso se è diverso dal conteggio dei byte), la terza è la dimensione cumulativa. I programmi che si adattano al tweet sono separati dagli altri con una riga di ===.

Per me, l'output è simile al seguente:

 1   7   7 q~$~\->
 8  10  17 qDbJ%5/)3*
12  12  29 ',32>_51>'d
 7  13  42 Aq{~-Ace|}/N&
 2  15  57 qe!{~1e6-z}$0=~
 4  19  76 q"FIHEELT"3*H<fe=:+
 5  20  96 ".A"q~){" xelA"+W%}*
 9  22 118 q_{_')>+)}%W%+_W%N@N3$
11  22 140 "SATOR\AREPO\TEN"_W%1>
====================================
 6  25 165 9,:)s3/zq~))3mdg*{W%z}*N*
 3  43 208 LLq{_'=-z({+}{'=>_)$\[{)@+\}{\(@\+}]=&}?}/\
10  45 253 0XW]_m*qN/{'.f+W%z}4*f{\~@m>fm>N*}(\{8f^.e>}/

Quindi, ecco i compiti che attualmente posso inserire nel tweet.

Compito 1: tre numeri possono formare un triangolo? - 8 7 byte

Grazie a jimmy23013 per aver salvato 1 byte.

q~$~\->

Suite di test.

Si prevede che l'input sia un elenco in stile CJam.

Questo è abbastanza semplice: controlla se il lato più grande è più corto della somma degli altri due. O in modo equivalente, controlla che il lato più corto sia più lungo della differenza degli altri due:

q~  e# Read and eval input.
$~  e# Sort the values and dump them on the stack.
\-  e# Subtract the middle value from largest.
>   e# Check if the smallest value is greater than that.

Compito 2: il più vicino a un milione - 15 byte

qe!{~1e6-z}$0=~

Suite di test.

Forza bruta semplice:

q        e# Read input.
e!       e# Get all permutations.
{        e# Sort by...
  ~      e#   Evaluate the permutation to get its numerical value X.
  1e6-z  e#   abs(X - 1,000,000)
}$
0=       e# Pick the first element (which minimises the difference)
~        e# Evaluate it to get rid of the leading zeroes.

Attività 4 - Lettere FILTHE - 21 19 byte

Grazie a jimmy23013 per aver salvato 2 byte.

q"FIHEELT"3*H<fe=:+

Suite di test.

L'idea è quella di creare una stringa che contenga ciascuna delle lettere FILTHE una volta per ciascuna delle loro linee ortogonali. Questo viene fatto tramite una divertente manipolazione delle stringhe:

q          e# Read the input.
"FIHEELT"  e# Push this string. It first contains the 3-line letters, then the 2-line 
           e# letters, where we include 'E' twice to make it count for 4.
3*         e# Repeat 3 times: "FIHEELTFIHEELTFIHEELT"
H<         e# Truncate to 17 characters: "FIHEELTFIHEELTFIH". This is chosen such that
           e# it discards the third repetition of the 2-line letters.
fe=        e# For each character in the input, count its occurrences in this new string.
:+         e# Sum them all up.

Attività 5 - Alex ricorsivo A. - 27 20 byte

".A"q~){" xelA"+W%}*

Suite di test.

L'implementazione della sottostizione A.e .Adirettamente è troppo costosa. Invece, notiamo che dobbiamo gestire solo un caso, se invertiamo la stringa ogni volta. Inoltre, anteporre Alex(e uno spazio) ogni volta equivale a espandere l'iniziale. Possiamo salvare un altro byte aggiungendo il contrario prima di invertire la stringa:

".A"        e# Start with ".A" (the -1st iteration if you like).
q~)         e# Read input, eval, increment (so the following block is run at least once.)
{           e# Repeat this block that many times...
  " xelA"+  e#   Append " xelA".
  W%        e#   Reverse the string.
}*

Attività 7 - Dividere le cifre in decine - 18 16 13 byte

Aq{~-Ace|}/N&

Suite di test. (Con parentesi attorno ad ogni uscita.)

Non esattamente facile da usare: il valore di verità è una singola riga, il valore di falsa è la stringa vuota.

L'idea di base è semplice: aggiungi le cifre a un totale parziale che ripristiniamo ogni volta che colpisce esattamente 10. Il totale deve essere zero alla fine dell'input. Per cominciare, risulta essere più breve del totale a 10 e sottrarre le cifre, reimpostando il totale ogni volta che si preme 0. Tuttavia, è necessario assicurarsi di non restituire qualcosa di vero quando l'input è tutto azzerato. Il modo più breve che ho trovato per farlo è stato reimpostare il totale sul personaggio con il punto di codice 10 (l'avanzamento di riga), quindi controllare alla fine che abbiamo effettivamente quel personaggio in pila e non il numero 10. Questo funziona, perché sia ​​lo zero intero sia il carattere zero (il byte null) sono falsi:

A     e# Push a 10, the initial running total.
q{    e# For each character in the input...
  ~-  e#   Evaluate the character to get the digit and subtract it from the total.
  Ac  e#   Push a linefeed character.
  e|  e#   Logical OR of the running total and the linefeed character (using
      e#   short-circuiting).
}/
N&    e# Take the set intersection with the string containing a linefeed character.
      e# If the total is still a number of any character other than the linefeed,
      e# this will yield an empty string. Otherwise, the string will remain unchanged
      e# and the linefeed will be printed.

Task 8 - Square Clock - 10 byte

qDbJ%5/)3*

Suite di test.

Questo è solo un po 'di magia del modulo piuttosto casuale sui codici dei caratteri che accade con l'hash sui valori corretti. Sono abbastanza convinto che sia possibile qualcosa di più corto, ma è il più corto che ho trovato (programmaticamente) per questo tipo di struttura:

q   e# Read the input.
Db  e# Treat the character codes of the string as digits in base 13. This maps the
    e# four inputs to the values: 2023940117708546863
    e#                            2023940113755405840
    e#                            2023940781838850791
    e#                            2023940113755390292
J%  e# Take the result modulo 19. This gives [2, 5, 12, 18], respectively.
5/  e# Divide by 5 (rounding down). [0, 1, 2, 3], respectively.
)   e# Increment. [1, 2, 3, 4], respectively.
3*  e# Multiply by 3. [3, 6, 9, 12], respectively.

Task 9 - Staffa d'arte - 23 22 byte

Grazie a Sp3000 per il salvataggio di 1 byte.

q_{_')>+)}%W%+_W%N@N3$

Suite di test.

Abbastanza semplice. La mappatura tra parentesi sinistra e destra viene eseguita aggiungendo 2 (o 1 tra parentesi):

q_      e# Read input and duplicate.
{       e# Map this block onto each character...
  _')>  e#   Duplicate and check if it's not a parenthesis.
  +     e#   Add the result, leaving parentheses unchanged and incrementing the
        e#   other bracket types.
  )     e#   Increment again.
}%
W%+     e# Reverse and add to the original, giving the middle line.
_W%     e# Duplicate and reverse, giving the first line.
N@      e# Push a linefeed, pull up the middle line.
N3$     e# Push another linefeed, copy the first line.

Task 11 - Sator Square - 22 byte

"SATOR
AREPO
TEN"_W%1>

Provalo qui.

Probabilmente la soluzione più noiosa di tutte. Spinge la prima metà della stringa e quindi la inverte:

"SATOR
AREPO
TEN"    e# Push everything up to the centre of the square.
_W%     e# Duplicate and reverse.
1>      e# Discard the "N", because we don't want that twice.

Task 12 - Prime Tweet - 13 12 byte

',32>_51>'d

Provalo qui. (Con output diagnostico per il risultato.)

Dopo 'c'è il non stampabile <DEL>(0x7F), che SE rimuove. Per incollare copia, usa invece questa versione:

'~),32>_51>'d

La stringa stampata è

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d

Cioè, contiene una sequenza di tutti i caratteri, seguita da un'altra sequenza da Sa ~, seguita da una singola d. La somma dei codici carattere è 12203. L'ho trovato tramite un po 'di tentativi ed errori.

'~),32>  e# Push a string with all printable characters.
_51>     e# Duplicate this and discard the first 51 of them.
'd       e# Push a "d".

1
q~$~\-> q"FIHEELT"3*H<fe=:+.
jimmy23013,

@ jimmy23013 Ohhhh, continuo a dimenticare che abbiamo e=questi giorni.
Martin Ender,

Speravo di ottenere abbastanza risposte per pubblicare qualcosa prima che tu vedessi come fare il 5 ° in 20 caratteri.
Peter Taylor,

19

Pyth, 9 attività in 138 byte

Ci è voluto un po 'di tempo.

Penso che 9 compiti sia il limite per Pyth. L'inclusione del programma più breve successivo (Sator Square) comporta 160 byte. Giocare a golf 20 byte è abbastanza improbabile. Ci sono 2 o 3 compiti che sono un po 'brutti e forse possono essere abbreviati, ma nel complesso sono abbastanza soddisfatto delle soluzioni.

Attività 1: tre numeri possono formare un triangolo ?, 8 byte

>FsMc2SQ

Provalo online: Input regolare o Test Suite

Attività 2: il più vicino a un milione, 14 byte

ho.a-^T6NsM.pz

Provalo online: Input regolare o Test Suite

Attività 4 - FILTHE Lettere, 20 byte

s*Vtsmmdd5/Lz"TLIHFE

Provalo online: Input regolare o Test Suite

Attività 5 - Alex ricorsivo A., 16 byte

u+"Alex "_GhQ".A

Provalo online: Input regolare o Test Suite

Attività 6 - Rotazione del tastierino numerico, 20 byte

jeo}zhN.uC_N3_c3jkS9

Provalo online: Input regolare o Test Suite

Attività 7 - Dividere le cifre in decine, 15 byte

qTu+WnGTvHG-zZZ

Provalo online: Input regolare o Test Suite

Task 8 - Square Clock, 12 byte

*3%%Cz1978 5

Provalo online: Input regolare o Test Suite

Task 9 - Staffa d'arte, 20 byte

V3_WtN+z_Xz"[<({})>]

Provalo online: Input regolare o Test Suite

Attività 12 - Prime Tweet, 13 byte

++*d44srd\\&

Provalo online: input regolare


2
La combinazione dei nostri invii si traduce in 133 byte.
isaacg,

9

TI-BASIC, 11 12 Attività in 728 830 byte

Attività 1 in 7 byte

:2max(Ans)`<`sum(Ans

L'input è un elenco in Ans.

Attività 2 in 92 110 byte

:seq(expr(sub(Ans,I,1)),I,1,7→L₁
:SortA(L₁
:min(7,1+sum(not(L₁
:{L₁(1)+sum(seq(L₁(I))₁₀^(I-8),I,2,7)),L₁(Ans)+sum(seq((I`>`Ans)L₁(I)₁₀^(1-I),I,2,7
:ᴇ6Ans(1+(0`>`min(ΔList(abs(1-Ans

Richiede un elenco di cifre L' input è una stringa in Ans.

Attività 3 in 119 byte

:Input Str1
:"  →Str2
:For(I,1,length(Str1
:sub(Str1,I,1→Str3
:inString("`<>`",Ans
:If Ans:Then
:max(0,min(L,C+2Ans-3→C
:Else
:C+1→C
:L+1→L
:sub(Str2,1,C)+Str3+sub(Str2,C+1,L-C+1→Str2
:End
:End
:sub(Str2,2,L

Richiede una stringa. Presuppone che C e L siano indefiniti o 0.

Attività 4 in 35 byte

:sum(int(2seq(inString("TLIHFE",sub(Ans,I,1))^.4,I,1,length(Ans

L'input è una stringa in Ans.

Attività 5 in 63 byte

:Ans/2→C
:sub("A.A",1+2fPart(C),2
:For(I,0,C
 :"Alex "+Ans
 :If I≠C
  :Ans+" xelA
:End
:Ans

L'input è un numero in Ans.

Attività 6 in 66 byte

: 𝑖 ^ ((Ans <7) (Ans-3 (Ans >3: For (Y, ⁻1,1: Disp sum (seq ((5-real (AnsX + Ans𝑖Y) -3imag (AnsX + Ans𝑖Y)) ₁₀ ^ ( X + 1), X, ⁻1,1: Fine

L'input è un numero in Ans.

Attività 7 in 36 43 byte

:Input <strike>L₁</strike>Str1
:.5
:For(I,1,<strike>dim(L₁</strike>length(Str1
 :Ans+<strike>L₁(I</strike>expr(sub(Str1,I,1
 :If 10=int(Ans
  :0
:End
:not(Ans

Richiede un elenco di stringhe di cifre .

Attività 8 in 29 byte

:18fPart(sum(seq(I(sub(Ans,I,1)=" ")/6,I,1,15

L'input è una stringa in Ans.

Attività 9 in 83 byte

:For(I,1,16,2
 :If I<8
  :Ans+sub("`)}]>`",inString("`({[<`",sub(Ans,4,1)),1
 :sub(Ans,I,1)+Ans
:End
:For(I,⁻1,1
 :Disp sub(Ans,9-8abs(I),8
:End

L'input è una stringa in Ans.

Attività 10 in 159 byte

:1→X
:Input Str1
:2+length(Str1→L
:"X
:While 2+L`>`length(Ans
 :Ans+Ans→Str2
:End
:Ans→Str3
:While 1
 :"XX
 :Ans+Str1+Ans→Str1
 :For(I,1,L
  :Ans+sub("0X.",2expr(sub(Str2,I+1,1))+not(expr(sub(Ans,I,3)+sub(Str2,I,3)+sub(Str3,I,3))),1
 :End
 :Disp sub(Ans,L+3,L
 :Str2→Str3
 :Str1→Str2
 :Input Str1
:End

Utilizza X0.invece di .Xorispettivamente (scusate niente corrisponde). Richiede l'inserimento riga per riga. Devi inserire due righe di Xs per vedere tutto l'output, quindi 2nd + Esci per uscire.

Compito 11 in 39 byte

:Disp "SATOR
:Disp "AREPO
:Disp "TENET
:Disp "OPERA
:Disp "ROTAS

Attività 12 in 77 byte

: Ans + "tvm_I% LinReg (ax + b) DS <(getKeyconj (1-PropZTest (dayOfWk (Manual-Fit C / YANOVA (* row (HorizRegEQUnarchive [J]! # $ &'', .234567890:; = >? @GBQX \^ _`qw {|} ~

O come esadecimale:

72702ABB21FFDBADBB25BB3EEF06EF16
6331BB5917746201BB695C092DBBD2BB
D3BBD4AEAE2B3A323334353637383930
3EBBD66A6CAFBBD147425158BBD7F0BB
D9BBD5BBC1BBC708BBD809BBCF

L'input è una stringa contenente "in Ans.

Questo è effettivamente impossibile in TI-BASIC. È possibile modificare in modo esadecimale un programma di base e utilizzare determinati token a 2 byte per ottenere tutti i caratteri ASCII stampabili nel codice sorgente, ma non è questo il problema. Il problema è che non c'è modo di memorizzare un "carattere in una stringa in puro basic su un calc pulito senza input di programma (lo stesso vale per il carattere, ma non è ASCII stampabile). È possibile, tuttavia, inserire "un'equazione al di fuori di basic, dopo di che è possibile utilizzare basic per convertire l'equazione in una stringa e visualizzare quella stringa. Inoltre, sullo schermo c'è solo spazio sufficiente per 128 caratteri alla volta.


7

Perl, 4 attività in 117 byte

Proviamo una lingua vera ;)

Non si sono ancora arresi, potrebbe anche essere in grado di stringere 5 compiti in 140 byte, anche se è improbabile!

* Attività 1: 30 + 1 = 31 byte

@F=sort@F;say$F[0]+$F[1]>$F[2]

Uso: perl -aM5.010 entry.pl input.txt

* Task 4: 32 + 1 = 33 byte

y/ELTFHI/4223/;s/./+$&/g;$_=eval

Uso: perl -p entry.pl input.txt

Attività 5: 54 byte

say"Alex "x($_/2+1).qw(A. .A)[$_%2]." xelA"x(--$_/2+1)

-2b grazie a Dom Hastings

Uso: echo 4 | perl -M5.010 entry.pl

Attività 7: 37 + 2 = 39 byte

($i+=$_)>10&&exit,$i%=10for@F;$_=!$i;

Uso: perl -pF entry.pl input.txt

* Compito 8: 21 + 2 = 23 byte

$_=y/|_ 
/14/dr/64%14

Questo è un po 'complicato. Iniziato sostituendo ogni |con xe ciascuna _con yspazi poi sostituzione per produrre una stringa di due cifre univoco per ogni griglia ( yyxxyxxyyx, yyxxyxxyyxyyxxxxyxyx, yyxxxxyxyxyyxyxxxyyx, yyxyxxxyyxyyxxxxyyx, yyxxxxyyx). Successivamente, ho scritto un programma per rafforzare i valori di xe y, e le operazioni matematiche che potrebbero essere eseguite sui numeri prodotti dopo la sostituzione xe yper fornire un output di 3,6,9,12 per ciascun numero. Alla fine, x=1, y=4e l'operazione di magia era /64%14.

Uso: perl -0p entry.pl input.txt

Attività 11: 34 byte

say"SATOR
AREPO
TENET
OPERA
ROTAS"

Uso: perl -M5.010 entry.pl

* Attività 12: 30 byte

say d.pack"C*",32..126,83..126

Uso: perl -M5.010 entry.pl

Disclaimer: -M5.010 è considerato 'gratuito'


Ruby è meno reale di Perl? ;)
Martin Ender,

9
Quando vedo le
tue

1
Bel lavoro! Penso che puoi salvare 2 byte con qw(A. .A)[$_%2]anziché ("A.",".A")[$_%2]nell'attività 5, e sono sicuro che puoi ottenere qualche altro byte fuori ...
Dom Hastings,

6

Ruby, 4 attività in 280 byte (non competitivo)

Questo è solo un tentativo, continuerò a fare i compiti più tardi (e speriamo di giocare a golf con quelli esistenti).

Compito 1

a=gets.split.map &:to_i;p a.all?{|e|e<a.inject(:+)-e}

Compito 2

p gets.chars.permutation.map{|a|a.join.to_i}.min_by{|x|(x-1e6).abs}

Compito 4

n,b='EFHILT',0;gets.chars.map{|c|b+=n[c]==p ? 0:[4,3,3,3,2,2][n.index c]};p b

Compito 5

a='Alex A.';gets.to_i.times{|i|i%2<1 ? a.sub!('A.','.A xelA'):a.sub!('.A',a)};$><<a

6

TI-BASIC, 12 attività in 994 byte

Scarica tutto come file di gruppo TI ( .8xg )

(Tag spoiler aggiunti per richiesta.)

Compito 1: tre numeri possono formare un triangolo? - 7 byte

Scarica come file di programma TI-83 + ( .8xp )

:2max(Ans)<sum(Ans

Compito 2: il più vicino a un milione: 114 byte

Scarica come file di programma TI-83 + ( .8xp )

:int(10fPart(Ans\10^(\-cumSum(binomcdf(6,0→X
:"sum(\L\X\10^(\cumSum(not(binompdf(6,0→\Y1\
:SortD(\L\X
:\Y1\→X
:sum(not(\L\X
:If Ans
:Then
:If max(\L\X=1
:X+\E\6-\10^(\6-Ans→X
:SortA(\L\X
:augment(ΔList(cumSum(\L\X)),{0→X
:End
:{X,\Y1\
:Ans(1+(0>min(ΔList(abs(\E\6-Ans

Task 3 - Simple Keyboard Simulator - 131 127 byte

Scarica come file di programma TI-83 + ( .8xp )

:Input Str1
:DelVar X1→Y
:"..→Str2
:For(Z,1,length(Str1
:sub(Str1,Z,1→Str3
:(Ans=">")-(Ans="<
:If Ans
:Then
:max(1,min(Y+Ans,X+1→Y
:Else
:sub(Str2,1,Y)+Str3+sub(Str2,Y+1,X-Y+2→Str2
:X+1→X
:Y+1→Y
:End
:End
:sub(Str2,2,X

Attività 4 - Lettere FILTHE - 34 byte

Scarica come file di programma TI-83 + ( .8xp )

:sum(int(\³√(\12seq(inString("TLIHFE",sub(Ans,X,1)),X,1,length(Ans

Attività 5 - Alex ricorsivo A. - 107 byte

Scarica come file di programma TI-83 + ( .8xp )

:Input X
:".A..
:For(X,0,X
:Ans→Str1
:5int(.5X+.5
:sub(Str1,1,Ans+1)+sub(".A xelAlex A.",6gcd(X,2)-5,7)+sub(Str1,Ans+4,5X-Ans+1
:End
:sub(Ans,2,5X+2

Attività 6 - Rotazione del tastierino numerico - 86 byte

Scarica come file di programma TI-83 + ( .8xp )

:.3Ans+2(Ans=6→X
:[[9,6,3][8,5,2][7,4,1
:For(X,0,X
:rowSwap(Ans\^T\),1,3
:End
:Ans
:*row+(10,*row+(10,Ans\^T\,1,2),2,3
:For(X,1,3
:Disp Ans(3,X
:End

Attività 7 - Dividere le cifre in decine - 77 byte

Scarica come file di programma TI-83 + ( .8xp )

:Ans+"0
:seq(expr(sub(Ans,X,1)),X,1,length(Ans
:augment(Ans,{10not(not(max(Ans→X
:1→X
:Repeat Ans≥dim(\L\X
:Ans+1
:If 10=sum(\L\X,X,Ans
:Ans+1→X
:End
:X=Ans

Attività 8 - Orologio quadrato - 35 byte

Scarica come file di programma TI-83 + ( .8xp )

:12-3max(seq(X(sub(Ans,6gcd(X,2)+X,1)≠" "),X,1,3

Attività 9 - Arte di parentesi - 86 byte

Scarica come file di programma TI-83 + ( .8xp )

:Input Str1
:For(X,1,4
:For(Y,0,1
:abs(X-9not(Y→Z
:"()[]{}<>
:sub(Ans,inString(Ans,sub(Str1,X,1))+Y,1
:Output(1,Z,Ans
:Output(2,9-Z,Ans
:Output(3,Z,Ans
:End
:End

Attività 10 - Perimiterizza - 218 byte

Scarica come file di programma TI-83 + ( .8xp )

:".
:For(A,0,\E\9
:Input Str1
:Ans+Str1→Str2
:If Str1≠".
:End
:length(Ans→X
:round(A\^-1\(Ans-2→B
:seq(expr(sub(Str2,A,1)),A,2,X-1→B
:πAns→C
:"augment(Ans,augment(Ans,\L\B))+augment(Ans,augment(\L\C,Ans))+augment(\L\B,augment(Ans,Ans→X
:seq(0,A,1,B
:\L\X→A
:For(C,0,A+1
:seq(\L\A(A+BC),A,1,B→C
:int(Ans→B
:{0
:1+not(\L\X)+not(fPart(\L\X→B
:".
:For(X,1,B+2
:Ans+sub("120",\L\B(X),1
:End
:Disp sub(Ans,2,B+2
:End

Sono state effettuate queste sostituzioni: 0= ., 1= X, 2=o

Per l'immissione (dopo l'inizio del programma), digitare una riga alla volta, premendo Invio ad ogni interruzione di riga, fino a quando non viene scritta l'ultima riga. Quindi premere Invio, digitare un punto, quindi premere di nuovo Invio per inviare l'intera stringa.

Task 11 - Sator Square - 38 byte

Scarica come file di programma TI-83 + ( .8xp )

:Disp "SATOR","AREPO","TENET","OPERA
:"ROTAS

Attività 12 - Prime Tweet - 151 byte

Scarica come file di programma TI-83 + ( .8xp )

:Ans+"!#$%&'()*+,-./01234567889:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
:For(X,1,45
:Ans+" 
:End
:Ans

Ansdovrebbe contenere una doppia citazione, eseguita digitandone una direttamente \Y1\dall'editor delle equazioni ed eseguendo Equ►String(\Y1\,Str1:Str1dalla schermata principale.

La lunghezza dell'output è 140. 8 appare due volte e ci sono 45 spazi insieme agli altri caratteri ASCII che appaiono ciascuno una volta. Ciò equivale a (33 + 34 + ... + 126) + 56 + 32 × 45 = 8969, un primo di Sophie Germain.


Ho chiesto OP, e si può contare come un token sin(come la visualizzazione s, i, n, e (in Task 12
lirtosiast

0

Python 3, 1 task, 268 byte, non competitivo

Ho provato il task n. 2 in Python 3.5.2. Sono nuovo nel golf del codice e in python

import itertools
def f2(l):
    n=1000000
    l=list(itertools.permutations(l))
    j = len(l)
    m=[None]*j
    while j>0:
        j -= 1
        m[j]= int(''.join(str(i) for i in l[j]))
        l[j]=abs(n-m[j])
    l.sort()
    k=n-l[0]
    return(n+l[0],k)[k in m]

Benvenuti in PPCG. Troverai in Python 3 che puoi mettere alcune delle tue affermazioni su una riga, per esempio che potresti scrivere. x=10;print(x)Ciò aiuterebbe alcune delle tue sezioni rientrate.
George,
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.