Mini-golf 9 trous: description
- 9 défis de golf de code (généralement assez faciles) de difficulté variable
- Pénalités pour avoir utilisé la même langue plusieurs fois
- Tous les défis sur un thème spécifique (ce thème: Manipulation de texte)
- L'entrée et la sortie peuvent être raisonnables (c.-à-d. STDIN et STDOUT, lecture / écriture dans un fichier, argument de fonction et valeur de retour, etc.) mais NE doivent PAS être codées en dur dans le programme
- Fortement inspiré par 9 Hole Challenge et Text Mechanic
des trous
Sac de golf code
Prenez deux chaînes en entrée.
Affiche le nombre de caractères de la première chaîne, tout en ignorant toute occurrence d'un caractère dans la deuxième chaîne.
Exemple:f("foobarbaz", "ao")
=>5
Un pré-texte pour le golf
Prenez deux chaînes en entrée.
Sortez la première chaîne, chaque ligne étant préfixée par la seconde.
Exemple:f("foo\nbar\nbaz", "a")
=>"a foo\na bar\na baz"
Guerre des onglets vs espaces
Prenez une chaînes
, un nombren
et un booléenb
(spécifié comme vous le souhaitez) en entrée.
Sib
est vrai, affichezs
chaque onglet converti enn
espaces.
Sinon, affichez les
avec tous lesn
espaces convertis en tabulations.
Exemple:f("if (x) {\n\tdoStuff();\n}", 4, true)
=>"if (x) {\n[sp][sp][sp][sp]doStuff();\n}"
([sp]
signifie espace)Piliers de golf
Prenez une chaîne
s
, un nombren
et un autre nombrem
en entrée.
Sorties
en colonnes den
lignes chacune etm
caractères par colonne.
Ayez également un espace d'un espace entre les colonnes.
Exemple:f("this is some placeholder text, foo bar baz...", 3, 5)
=>this aceho foo is so lder bar b me pl text, az...
Lettres amicales
Prenez une chaînes
et un nombren
en entrée.
Sortez le groupe den
lettres le plus courants
.
S'il y a une égalité, sortez tout ou partie d'entre eux.
Exemple:f("abcdeabcfghiabc", 3)
=>"abc"
Brouillées
Prenez une chaîne en entrée.œufslettres pour le petit déjeuner
Sortez la chaîne avec tous ses mots brouillés (ordre des lettres aléatoire) à l'exception de leurs première et dernière lettres.
Par souci de simplicité, supposons que l'entrée sera une liste de "mots", séparés par des espaces (c'est-à-dire dans@$&_():;" foo bar
,@$&_():;"
est considéré comme un "mot").
Exemple:f("this is a sentence that will be scrambled")
=>"tihs is a stcneene that wlil be sclamrbed"
ASCIIfy
Prenez une chaîne en entrée.
Si la chaîne ne contient que des nombres et des espaces, remplacez les nombres par leurs caractères ASCII respectifs (en supprimant les espaces).
Sinon, faites l'inverse (des caractères aux chiffres).
Exemple:f("ASCIIfy challenge")
=>"65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101"
Exemple 2:f("65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101")
=>"ASCIIfy challenge"
Transformation mini-mini-démarque
Prenez une chaîne en entrée.
Sortez la chaîne convertie avec mini-markdown, comme utilisé dans les commentaires sur Stack Exchange.
Ceci est une version encore mini-er: il vous suffit de gérer**bold**
,*italics*
et`code`
.
Vous n'avez pas besoin de gérer l'imbrication invalide, comme**foo *bar** baz*
. Supposons également que lorsque vous voyez un délimiteur (*
ou`
), cela signifie toujours de formater (c'est-à-direte**st**ing
=>te<b>st</b>ing
etfoo* bar *baz
=>foo<i> bar </i>baz
).
Exemple:f("**foo** *bar **baz*** `qux`")
=>"<b>foo</b> <i>bar <b>baz</b></i> <code>qux</code>"
Seuls les meilleurs personnages
Prenez une chaînes
, un nombren
et une chaîner
en entrée.
Sortez len
e caractère de chaque mots
. (Indexés 0, les mots sont séparés par des espaces).
Si la longueur du mot est inférieure àn
, utilisezr
plutôt ce mot.
Exemple:f("this is a test sentence foo bar baz", 2, "-")
=>"i--snorz"
Notation
Votre score est la somme du nombre de caractères de vos programmes. Pour chaque langue répétée, multipliez par 110%. Par exemple, si vous avez trois solutions Ruby et que le nombre total de caractères de toutes vos solutions est de 1000, votre score est de 1000 * 1,1 * 1,1 = 1210. Arrondissez si vous avez un score non entier.
Bonne chance!
code-challenge
string
multiple-holes
Poignée de porte
la source
la source
_
n'a pas d'importance puisque j'ai spécifié de ne pas l'inclure. J'ai édité pour clarifier certains des autres.**foo***bar**baz*
?Réponses:
Résultat: 382 * 1,1 2 = 462
Langues sujettes à changement.
1. APL,
84Merci @marinus d'avoir rasé 4 caractères.
Appelé avec les chaînes comme arguments gauche et droit, par exemple.
2. Ruby,
3531Merci @DoorknobofSnow d'avoir rasé 4 caractères.
3. Python, 48
4. GolfScript, 20
Suppose que les arguments sont sur la pile. Testez en ligne
5. J, 50
Appelé avec la chaîne comme argument de gauche et le nombre comme droite, par exemple.
6. Ruby, 61
7. GolfScript,
393534Encore une fois, suppose que l'argument est sur la pile. Testez en ligne
8. Perl, 98
9. Haskell, 36
la source
f=->s,r{...}
) au lieu d'une fonction. Je refuse cependant de voter jusqu'à ce qu'il soit terminé: PPython - 697 × 1,1 9 ≈ 1644
Gee, j'aime vraiment les lambdas.
Remarque : 3 et 5 ont été copiés sans vergogne de la réponse de Volatility , car je ne pouvais pas trouver une meilleure alternative. De plus, cela a été fait juste pour le plaisir .
EDIT : Merci à Volatility pour les conseils.
la source
int
, car les booléens sont une sous-classe d'entre eux, et pour 7.all([...])
peut être raccourci àx.replace(' ','').isdigit()
a
.Score 513 * 1,1 5 = 826
Il a fallu beaucoup de coups à la peine de même langue. Résolu la plupart de ces problèmes en Ruby juste pour les terminer aussi vite que possible. Peut changer certaines langues plus tard. Ajout d'un petit récapitulatif / explication sur chaque réponse.
1: Python (46)
Premièrement, une réponse plus courte dans Ruby 2.0 (30) qui donne plus de pénalités et un score global plus élevé:
2: Rubis 1.9+ (37)
Renvoie chaque ligne de
s
préfixe avect
:3: Rubis 1.9+ (48)
Renvoie
s
avec des tabulations remplacées par desn
espaces ou vice versa, selonb
:4: Rubis 1.9+ (95)
Quelqu'un m'a tiré dessus.
5: Rubis 1.9+ (58)
Renvoie la série de
n
caractères la plus courante danss
:6: J (47)
Brouille le texte d'une manière ou d'une autre; Mot à mot volé sans vergogne à Marinus :
7: Rubis (57 + 1)
Imprime l'entrée ASCIIfied ou dés-ASCIIfied. Courez avec l'
-p
interrupteur.8: Sed (87)
Imprime l'entrée convertie du (mini) markdown en HTML:
9 Rubis 1.9+ (37)
Renvoie une chaîne des
n
e caractères de chaque premier mot des
, our
:la source
<b>test** **test2</b>
pour**test** **test2**
?**foo *bar* baz**
?-
opérateur de code rubis , fonctionne avec l'énumérateur?Travail en cours
1. Java - 66
2. Java - 64
3. Python - 58
4. Python - 84
5.
6.
7. Befunge 98 - 9
8.
9.
la source
for(char c:b.toCharArray())
etreplace(c+"","");
etreturn s.length();
(ou quelque chose comme ça) pour le faire fonctionner.