Écrivez un programme dans n'importe quelle langue qui lit les entrées de stdin et sort une sortie légèrement modifiée vers stdout. Le programme devrait emprunter certains caractères de l'entrée et de la sortie avec un préfixe aussi grand que possible, *language-name* is awesome!
suivi d'un retour à la ligne et de ce qui reste de l'entrée.
- L'entrée ne contient aucun caractère majuscule.
- Si le premier caractère du nom de la langue n'est pas présent dans la chaîne, seul le caractère de nouvelle ligne doit être emprunté.
- S'il n'y a pas de caractère de nouvelle ligne dans l'entrée, sortez l'entrée non modifiée.
- Peu importe lequel des personnages disponibles vous empruntez.
J'utilise \n
comme caractère de nouvelle ligne ( 0x0a
) pour économiser de l'espace lors de l'écriture. Le vrai programme ne doit se soucier que du vrai caractère de nouvelle ligne, pas de la \n
chaîne.
Exemple: python.
entrée: abcdefghijklmnopqrstuvwxyz\n0123456789
sortie: python\nabcdefgijklmqrsuvwxz0123456789
Depuis l'entrée ne comporte pas d' espace, nous ne pouvons pas continuer , même si nous avons assez de caractères pour le mot suivant: is
.
Exemple: C.
entrée: i don't see anything!
sortie: i don't see anything!
C n'a pas été trouvé dans la chaîne, donc aucune modification n'a été possible. De plus, aucun caractère de nouvelle ligne n'est présent.
Exemple: C ++.
entrée: i don't\nsee anything!
sortie: \ni don'tsee anything!
C n'a pas été trouvé dans la chaîne, donc aucune modification n'a été possible.
Exemple: Obj-C.
entrée: objectively, clojure is amazing.\nq.e.d.
sortie:obj\nectively, clojure is amazing.q.e.d.
L'entrée contient suffisamment de caractères pour écrire obj
mais il -
manque.
Le nombre d'octets de votre code source moins le nombre d'octets du nom de votre langue, utf-8 encodé (si possible), est votre score; victoires les plus faibles!
i don't\nsee anything!
comme cas de test?Réponses:
Pyth, 37 octets
Le code source fait 41 octets de long.Essayez-le en ligne.
Comment ça fonctionne
la source
Python, 186 - 6 = 180
Essayez-le en ligne
la source
Python, 146 octets
la source
Ceylan, 235 - 6 = 229
void a(){variable value i="";variable value r="\nceylon is awesome!";while(exists l=process.readLine()){i=i+"\n"+l;}i=i.rest;for(j->c in r.indexed){if(c in i){i=i.replaceLast(c.string,"");}else{r=r[0:j];break;}}print(r.rest+r[0:1]+i);}
Voici une version formatée et commentée:
Il utilise à la
replaceLast
place dereplaceFirst
car il est plus court.Quelques exemples d'entrées et de sorties dans le même format que dans la question:
abcdefghijklmnopqrstuvwxyz\n0123456789
→ceylon\nabdfghijkmpqrstuvwxz0123456789
i don't see anything!
→i don't see anything!
i don't\nsee anything!
→\ni don't see anything!
objectively, closure is amazing.\nq.e.d.
→ceylon is a\nobjectivel, sureiamzng.\q..d.
la source
JavaScript (ES6) 90 (100-10)
En tant que fonction renvoyant la sortie demandée. Il est difficile à implémenter avec les E / S, comme le substitut habituel de STDIN
prompt()
, qui n'accepte pas de nouvelle ligne à l'intérieur de la chaîne d'entrée.En fonction de la sortie réelle (en utilisant
alert
), le nombre d'octets est 107Testez l'exécution de l'extrait ci-dessous dans un navigateur compatible EcmaScript 6 (implémentation de l'opérateur de propagation et de la fonction flèche - j'utilise FireFox)
la source
Perl, 72-4 = 68 octets
Comprend 2 commutateurs.
Explication : Pour chaque caractère de la chaîne
"\nperl is awesome"
, supprimez le caractère correspondant de la chaîne d'entrée ($_
) jusqu'à ce que nous trouvions un caractère non présent dans$_
. Les caractères correspondants sont stockés dans$p
lesquels est préfixé et$_
ensuite imprimés.Le
-0
commutateur lit l'entrée complète plutôt que ligne par ligne et le-p
commutateur rend la lecture d'entrée et imprime la sortie implicite.la source
JavaScript (ES7),
101107-10 = 97Il était plus court auparavant et a même fonctionné sur les quatre cas de test, mais apparemment, j'ai raté une règle, alors ...
Fonctionne correctement dans Firefox 42. Cela commençait à l'origine à 119 octets, mais une astuce de la réponse de @ edc65 a beaucoup raccourci. Je pense qu'il y a encore place à amélioration. Comme toujours, les suggestions sont les bienvenues!
la source
obj
->job
, ne doit pas être modifié (règle 3)is awesome
et cela fonctionnerait toujours correctement sur les quatre. Je vais résoudre ce problème dès que possible.