Le défi des 9 trous
- 9 défis de golf de niveau de difficulté variable.
- Pénalités pour l'utilisation du même langage plus d'une fois.
La question sera mise à jour avec les pairs, les champions de trous et les gagnants des trophées.
Cela vient d’une compétition que j’ai avec des amis, ce n’est pas le format habituel, mais j’espère que certains d’entre vous apprécieront sa tournure différente. Défis, règles et trophées ci-dessous.
des trous
Voie verte (24)
f(c:string, n:integer)
Imprime une ligne contenant desn
instances dec
.Quelque part dans le rugueux (73)
f(t:string, s:string, n:integer) -> i
Oùi
est l'index de l'nth
instance des
danst
.Curry pour le dîner (6235)
f(x:function, y: function) -> g
Oùg
est une fonction qui appelleray
,n
fois; oùn
est la valeur de retour dex
Spew (92)
f(p:string)
Écrit dansp
et remplit un rectangle de taille aléatoire (ascii) de taille aléatoire.Chasse au trésor (75)
f(p:string, c:char) -> (x, y)
Lit le fichierp
contenant une grille de symboles et renvoie les coordonnéesx
ety
de la première instance de ce symbole dans la grille, en supposant qu'il existe.Pont sur la rivière Kwai (179)
f(l:list[int])
Imprime le diagramme des ponts de différence pourl
. Par exemple pour[1,7,3,17,1]
/+6\ /-4\ /+14\ /-16\ 1 7 3 17 1
Assurez-vous que les espaces sont créés en fonction de la taille du nombre ci-dessus. Pour un numéro à 3 chiffres, vous aurez besoin de 4 espaces entre les chiffres de la ligne ci-dessous.
Catch: Quelque part, votre code doit épeler un pantalon (doit avoir au moins 1 délimiteur non alphanumérique. Par exemple,
tr(ou,se)(rs)
Le temps passe vite quand vous jouez au golf (1157)
f(p:string) -> [h, m]
Lit le fichierp
contenant une représentation ASCII d'une horloge analogique, où l'aiguille des heures est représentée par une ligne et les minutes par deux. Produisez une liste contenant deux éléments: les heures et les minutes affichées sur l'horloge. Si une seule main est visible, supposez que les deux pointent vers cette position.Voici toutes les combinaisons possibles pour une main.
\ | / \|/ --o-- /|\ / | \
Ces positions sont respectivement (12, 1, 3, 5, 6, 7, 9, 11). Supposons que les autres personnages du cadran sont des espaces.
Charpente! ()
f(p:string) -> b:boolean
Où p est le chemin d'accès à un fichier contenant une construction ascii. Les blocs avec un espace blanc en dessous tomberont. (Sauf les barres obliques, qui restent en place s'il y a un bloc stable dans la direction opposée à la façon dont ils font face). Si le bâtiment est intégralement structurel, renvoyer vrai, sinon renvoyer faux. Tous les blocs non blancs sont comptés comme étant solides et autres que des barres obliques, ils tombent tous.Sécurité structurelle
____ |/\| | |
Pas sécurisé
|__ | |
Version sécurisée
|__ \\| |
Slacker News (218)
f(s:string, r:string, p:string)
Obtient les titres des 20 meilleures histoires sur Hacker News et modifie toutes les instances des
enr
, puis écrit les nouveaux titres dans un fichier html àp
où chaque titre est contenu dans un élément h1.Le fichier en sortie devrait quelque chose comme ça
<h1>Some title</h1></h1>Some other title</h1>...etc
Prise :
- Vous ne pouvez pas utiliser l'API HN.
- Vous ne pouvez pas utiliser Regex.
- Vous ne pouvez utiliser d’accolades angulaires nulle part dans votre code.
Notation
- Le nombre de caractères est la longueur de la fonction qui sera compilée et exécutée correctement. Cependant, vous devez toujours soumettre le code complet, y compris les importations.
- + 10% pour chaque langue répétée dans votre soumission. (Par exemple, si vous utilisez Ruby pour 3 solutions, votre score final sera multiplié par 1,2). Différentes versions du même nombre de langues comptent toujours comme la même langue.
- Le par sera le score moyen pour chaque trou.
- Soumettez vos solutions en une réponse.
- Votre score global est le nombre de vos personnages + votre pénalité linguistique, puis arrondissez-le.
Trophées
- Gold Jacket - ( @Sprigyig - 1290) Score global le plus bas
- Shooter - ( @Sprigyig - 9) La plupart des langues utilisées
- Bunker - Plus que le score normal de tous les trous
- Serpents dans un avion - ( @AsksAnyway - 1727) Soumission de caractères python la plus élevée dans une solution unique
- Good Parts - ( @AsksAnyway - 255) Nombre de caractères JS le plus élevé dans une solution unique
- Shakey Steve - La solution la plus courte utilisant des interfaces
- Vous n'êtes pas de là - bas - La solution linguistique la plus courte et unique possède la page wikipedia la plus courte.
- Happy Gilmoore - ( @AsksAnyway - 31) La solution la plus courte qui comporte le mot "alligator" dans le code.
- Magie des nains magiques - Les extensions par défaut de vos 9 fichiers sources de soumission sont une anagramme parfaite d'un mot du dictionnaire Oxford.
Vous n'êtes admissible à un trophée que lorsque vous avez terminé les 9 trous.
Les soumissions
- @Sprigyig 1290
- @ Firefly 1320
- @grc 1395
- @Trevor M 1465
- @C Gearhart 1654
- @Guy Sirton 1719
- @AsksAnyway 4651
la source
<
&>
/
poste fasse référence à 1 heure ou à 2 heures? (et pareillement pour le reste des diagonales)Réponses:
Score: 4651
2907 + pénalité de 60%
1. GolfScript - 14 caractères
Utilisation:
c n a
par exemple"test" 3 a
->testtesttest
Happy Gilmoore
2. Python - 72 caractères
3. Javascript - 255 caractères
Bunker Bonnes Pièces
4. Python - 132 caractères
5. Python - 89 caractères
6. Python - 189 caractères
7. Python - 1727 caractères
Serpents dans un avion
8. Python - 226 caractères
9. Python - 203 caractères
la source
i<i<42
), ou sont-elles autorisées tant que vous ne les utilisez que comme opérateurs?Score: 1320
Il me reste beaucoup à faire pour améliorer ce score ... Ah bon, au moins, j'ai évité les pénalités à répétition. :-)
1. Python (21 caractères)
La solution "évidente".
2. ECMAScript 6 (47 caractères)
Trouve l'index de manière peu conventionnelle en comptant la longueur de la sous-chaîne qui le précède.
3. J (12 caractères)
La conjonction
^:
intégrée élève une fonction à une puissance (c'est-à-dire qu'elle répète une fonction un nombre de fois donné). C'estf^:3 y = f (f (f y)))
. Cependant, il est surchargé d’accepter des fonctions plutôt que des entiers, auquel cas il exécute la fonction sur l’entrée pour obtenir le nombre de répétitions. Malheureusement, nous devons retourner les opérandes pour la tâche, sinon nous aurions la réponse simplef=:^:
.4. C (95 caractères)
Cette tâche laisse un peu de place à l'interprétation et aux abus: est-il acceptable de simplement sortir un caractère ASCII imprimable au hasard et de dire que c'est un rectangle dimensionné de manière aléatoire avec les dimensions de l'ensemble {1}? Probablement pas. Quoi qu'il en soit, je suis allé en clair,
rand()
mais en réalité, vous voulez probablement ajouter%9
quelque chose si vous voulez le tester. Sur ma machine Linux, je n'ai pas eu besoin de vider le fichier pour qu'il soit écrit (je suppose qu'il vole automatiquement à la sortie du programme), mais je suis sûr que vous devez le vider pour qu'il soit conforme aux normes, alors sentez-vous libre d'ajouterfflush(f);
au compte ici.5. Haskell (100 caractères)
J'aime le motif répété entre la recherche de la ligne et de la colonne (résumé via
h
).6. Lua (261 caractères)
Utilise plusieurs valeurs de retour et récursivité pour traiter les différences. Il m'a fallu quelques caractères pour reproduire exactement l'exemple de sortie (ajouter la bonne quantité d'espaces partout).
7. Go (307 caractères)
Pourrait probablement être joué au golf beaucoup plus; Je sais à peine aller.
8. CoffeeScript (+ node.js) (223 caractères)
Un peu un coup bas puisque j'ai déjà JS. Tant pis. Renvoie une valeur de fausseté (à savoir,
undefined
) ou une valeur de vérité (à savoir,1
) pour indiquer la réponse.9. Bash (254 caractères)
(De nouvelles lignes après les tubes ont été ajoutées pour plus de lisibilité.) Il était amusant de contourner les restrictions avec le shell. Je me rends compte qu'il y a probablement une meilleure façon de faire
$2,$4,$6,...
, mais c'est ce que j'ai quand même proposé.la source
f=str.__mul__
Score: 1 394,4
996 caractères + 40% de pénalité
1. Voie verte - Haskell, 19 caractères
Usage:
2. Rough - PHP, 72 caractères
3. Curry - JavaScript 1.8, 45 caractères
4. Spew - J, 43 caractères
Usage:
5. Trésor - J, 64 caractères
Usage:
6. Pont - Python, 166 caractères
7. Temps - Python, 205 caractères
Suppose que les lignes sont complétées par un espace de cinq caractères. Utilise les onglets pour le deuxième niveau d'indentation.
8. Bois - Python, 190 caractères
9. Slacker - Python, 192 caractères
Merci à Tyzoid pour l’idée du raccourcisseur d’URL.
la source
Edit: Pense que je vais simplement soumettre ceci tel quel: 1290 au total, aucune langue ne se répète.
Voie verte, C # 53
J'ai décidé d'échanger les langues avec # 1 et # 9. Totalement 30 ici pour des centaines plus tard.
Quelque part dans le rugueux, Python 59
Je n'aurais vraiment pas dû utiliser un langage aussi bon pour un problème facile. De plus, en quoi cela ne fait-il pas partie de la famille de fonctions indexOf de toutes les langues? Il me semble avoir toujours besoin de ça ...
Curry Pour Le Dîner, Lisp 61
Je n'ai pas touché le lisp depuis cette semaine au collège ...
Spew, Bash / shell utils 102
Mon bash-foo n'a jamais été aussi bon. Je vais jouer avec celui-ci plus tard. Si vous voulez que cela se termine plus vite, passez à / dev / urandom.
Chasse au trésor, C 113
Probablement l'un des problèmes les plus conviviaux. J'ai interprété "renvoyer deux entiers" comme prendre un pointeur de tableau de retour comme un argument. Avertissements? Quels avertissements? Un int * est aussi bon qu'un FILE * = p.
Pont sur la rivière Kwai, Perl 207
J'ai commencé à apprendre le Perl en écrivant celui-ci. (Mieux vaut tard que jamais!) Je suis venu dans ce désir de faire héroïque regex, alors je forme la chaîne comme les deux couches du pont ensemble, puis j'utilise des regex avec des remplacements d'espaces pour former les deux lignes différentes.
Le temps passe vite quand vous jouez au golf, Java 297
Vous ne pouvez faire que beaucoup pour rendre java laconique ... Cela suppose que l’horloge est remplie avec des espaces, de sorte que chaque ligne compte 5 espaces.
Charpente! Javascript 201
Il fonctionne dans la console de chrome. Je ne donne aucune garantie ailleurs = p. Cela nécessite que les lignes soient complétées par un espace égal à la longueur de la plus longue ligne. J'ai l'impression que c'est une demande raisonnable de l'art ASCII.
Slacker News, Ruby 197
la source
Je me suis amusé à toucher quelques langues pendant un petit moment ...
Nombre de caractères obtenus après suppression des espaces et des nouvelles lignes inutiles, mais la soumission reste en grande partie lisible. Puisque la question est un mélange de fonctions et de programmes, je n’ai inclus que le corps de la fonction, le cas échéant ... De plus, une certaine liberté a été prise avec la signification de "retour" ...
Total ~ 1719
1- Python (~ 20)
2- C (~ 109)
Version lisible:
3- Javascript (~ 56)
4- Rexx (~ 136)
5- Scala (~ 290)
6- C ++ (~ 355)
7- Go (~ 301)
Notez que ceci nécessite que l’horloge soit complétée (c’est-à-dire que toutes les lignes ont la même longueur).
8- Rubis (~ 259)
Bidouille 9h / Unix (~ 193)
la source
Pas vraiment ici pour jouer au golf, mais voici un peu de Tcl, car la langue a besoin de plus d'amour:
Généralement non testé car écrire ces procédures en une demi-heure est beaucoup plus intéressant que d'essayer de concevoir correctement le code de golf. Prendre plaisir!
la source
Seulement eu le temps de travailler sur la moitié d'entre eux. Vous semblez les vouloir sous la forme d'une fonction et non d'un one liner. Toutes ces fonctions sont donc. Test du code sous la fonction. En Perl.
Voie verte:
Rugueux:
Curry:
Vomir:
Trésor:
Je travaillerai 6-9 demain.
la source
WIP. Notez que le nombre de caractères peut être désactivé en raison de
'\n'
etwc
[1 voie verte] Mindf * ck, 54 caractères
Utilisation: Une fois le code écrit, entrez votre chaîne et terminez-la par un ^ a (ctr + a), puis, immédiatement après, entrez votre numéro.
Une mise en garde: le nombre indiqué doit être uniquement compris entre 0 et 9 (si vous souhaitez une plus grande, la valeur ascii-48 du caractère que vous avez entré sera utilisée
n
).Capture d'écran:
[3 Curry for Dinner] Javascript, 59 caractères
[4 Spew] BASH, 56 caractères
[7 le temps passe vite quand vous jouez au golf] C, 334 caractères (412 avec définition de macro)
Remarque: cette fonction renvoie un pointeur sur un tableau entier à deux dimensions, formaté comme suit: {3, 55} (pour une position d'horloge de heure sur 3, minute sur 11).
[9 Slacker News] PHP, 246 caractères
Implémentation séparée / originale dans BASH + AWK, 218 caractères
la source
1654
1. Voie verte (Haskell - 37)
2. Quelque part dans le rugueux (Mathematica - 43)
3. Curry pour le dîner (Lisp - 58)
4. Spew (Matlab / Octave - 83)
5. Chasse au trésor (C - 176)
6. Pont sur la rivière Kwai (Ruby - 192)
7. Le temps passe vite quand vous jouez au golf (Node.js - 406)
8. Le bois! (Aller - 329)
9. Slacker News (Python - 330)
la source
Je suis un tricheur et je n'ai pas joué les 9 trous… pas encore . Néanmoins, voici mon trou 8, solution «Timber» en Perl (149 car).
Un de mes collègues a présenté cela comme un défi au travail. Nous nous sommes amusés avec elle, surtout avec moi, car j'ai la solution la plus basse à ce jour!
Notre règle était que le script devait être autonome
true
oufalse
suivi par une nouvelle ligneSTDOUT
, et qu'aucun «shebang» n'était acceptable.Ci-dessous la solution "minifiée". J'énonce également un « résumé » de la même chose qui inclut un code non «minifié» et des explications (souvent très longues) du raisonnement qui sous-tend mon approche.
la source
Je suis trop paresseux pour le modifier selon les règles de la concurrence, mais ça marche très bien ...
la source
Premier code golf! (Encore un travail en cours...)
1. Voie verte
Langue: Python 3.2.3
Taille du fichier: 23 octets
Code:
3. Curry pour le dîner
Langue: Python 3.2.3
Taille du fichier: 64 octets
Code:
la source
Un autre travail est en cours ici, et je suis au travail alors je reviendrai plus tard.
Voie verte en Ruby (14 caractères, 24 avec #alligator ), appel avec
f.(c, n)
Capture d'écran
Quelque part dans le brouillon dans CoffeeScript (38 caractères)
Capture d'écran
Curry pour le dîner en JavaScript (54 caractères)
Capture d'écran
Spew en PHP (111 caractères)
Cela nécessite
short_open_tag
dans le fichier de configuration PHP d'être activé. Sinon, le délimiteur d'ouverture devrait être<?php
, les@
symboles sont utilisésPHP_NOTICE
pour supprimer les erreurs qui sont générées pour éviterrand
de mettre des guillemets, et pour ne pas déclarer explicitement la$s
variable. Cela générera une grille carrée de caractères ascii entre 4 et 30 caractères sur les deux axes.Capture d'écran
la source
1. Voie verte (Python 2: 20)
Exemple d'entrée:
a("asdf",3)
-> string (asdfasdfasdf
)2. Quelque part dans le rugueux (Python 2: 47)
Exemple d'entrée:
b("1,2,333,4,5,6",",",3)
-> int (7)3. Curry pour le dîner (Javascript: 61)
Exemple d'entrée:
function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();
-> se connectestring(1)
à la console ... 3 fois.Conformément aux spécifications,
c
renvoie une fonction et n'exécute pas réellement cette fonction elle-même.4. Spew (C ++ 11: 171)
Pas réellement testé cela, mais devrait fonctionner.
la source
Une certaine empreinte est laissée intacte pour des raisons de lisibilité, mais elle a été supprimée lors du comptage des caractères. Le total est d'environ
1227. Ou pas, j'ai oublié un problème.14861465 caractères.1. MIPS ASM (55 caractères)
2. Schéma (52 caractères)
3. F # (39 caractères)
4. Powershell (133 caractères)
5. C ++ (
184152 caractères)6. C # (
291282 caractères)7. Haskell (
318306 caractères)Je cherchais une excuse pour essayer Haskell. Je pensais avoir été intelligent en générant la liste des positions via des combinaisons de chiffres, mais avec le nombre de caractères requis, j'aurais pu coder en dur cette fichue chose. Tant pis. Le code est atroce mais c'était amusant d'écrire quand même.
edit: corrigé pour qu'il retourne correctement les minutes.
8. Lua (259 caractères)
J'ai été surpris de constater que les chaînes ne supportaient pas l'indexation de style de tableau. Je devais donc m'appuyer sur sub.
9. Python (187 caractères)
Merci à grc / Tyroid pour le raccourcisseur d’URL.
la source