les tâches
Tous les concurrents tentent de résoudre la liste suivante de 10 tâches:
Lit un entier positif n à partir de l’entrée et renvoie la somme des cubes des n premiers entiers non négatifs.
Pour entrée
1
, cela devrait revenir0
.Lit un entier positif n à partir de l'entrée et renvoie une valeur de vérité si et seulement si n est un nombre premier de Mersenne .
Lire une liste non vide de n entiers à partir de l'entrée et renvoyer leur médiane .
Si n est pair, utilisez la moindre des deux valeurs centrales.
Par exemple, la médiane de
[1 4 3 2]
is2
.Lit un entier (positif, négatif ou 0), ou une représentation sous forme de chaîne en base 10 ou unaire, à partir de l'entrée et renvoie ses chiffres en négatif , sans zéros (à l'exception de l'entrée 0).
La sortie peut être formatée de toute manière pratique (chiffres, tableau, chaîne, etc.).
Retour
pneumonoultramicroscopicsilicovolcanoconiosis
.Vérifiez la date du jour et revenez le
Happy New Year!
cas échéant selon le calendrier grégorien.Sélectionnez de manière pseudo-aléatoire 64 points de code attribués uniques dans le bloc Unicode CJK Unified Ideographs Extension-A (U + 3400 - U + 4DB5) et renvoyez la chaîne des caractères correspondants.
Toutes les chaînes possibles doivent avoir la même probabilité d'être sélectionnées.
Lire deux chaînes de caractères ASCII imprimables depuis l'entrée et renvoyer une valeur de vérité si et seulement si le caractère de la première chaîne forme une sous-séquence de la deuxième chaîne.
Par exemple,
abc
,axbxc
devrait revenir truthy etbac
,axbxc
devrait revenir falsy.
- Lire un tableau rectangulaire multidimensionnel d'entiers et un entier n à partir de l'entrée et renvoyer le tableau modifié avec tous les entiers multipliés par n .
Lire un entier non négatif n à partir de l'entrée et renvoyer une chaîne de n wagons, comme indiqué ci-dessous.
Exemple de sortie pour n = 3 :
______ ______ ______ | | | | | | ()--() ~ ()--() ~ ()--()
La sortie peut être entourée d'une quantité quelconque d'espaces blancs, à condition que cela ressemble à l'exemple.
Des clarifications
0 n'est ni positif ni négatif.
Les espaces de fin sont toujours autorisés dans la sortie.
Plusieurs entrées peuvent être lues dans n'importe quel ordre cohérent et commode.
Règles
Aucune réponse ne peut résoudre deux tâches différentes dans le même langage de programmation. 1
Les règles standard de code-golf s'appliquent à chaque tâche .
En particulier, vous pouvez soumettre des programmes ou des fonctions avec les valeurs par défaut d'E / S habituelles , mais vous ne pouvez pas tirer parti de ces lacunes .
La tâche 5 est essentiellement un défi de complexité kolmogorov , donc le codage en dur de la sortie est non seulement autorisé, mais attendu.
Une seule réponse par utilisateur doit être publiée, contenant au plus une solution pour chacune des tâches.
Veuillez formater votre réponse comme dans l'exemple suivant:
## Task 1, Python, 42 bytes <code goes here> Explanation, I/O, required Python version, etc. go here. --- ## Task 7, C, 42 bytes <code goes here> Explanation, I/O, required compiler (flags), etc. go here.
Notation
Pour chaque tâche que vous résolvez, vous obtenez un point.
Cela signifie que vous n'avez pas à résoudre toutes les tâches pour participer.
Si votre solution pour la tâche n est la plus courte dans ce langage de programmation, vous obtenez un point supplémentaire.
Si votre solution pour la tâche n est le plus court de tous les langages de programmation, vous obtenez un point supplémentaire.
Les points bonus ne seront attribués qu’une seule fois pour chaque combinaison de tâches / langue et pour chaque tâche, respectivement.
Comme d’habitude, si deux solutions ont le même nombre d’octets, le temps d’affichage est décisif.
Si quelqu'un vous gomme plus tard, vous perdez le (s) point (s) de bonus que l'autre répondant gagne.
Vous pouvez participer au golf, ajouter / supprimer des langues de votre réponse ou échanger les langues utilisées pour deux tâches.
Chaque fois que quelqu'un modifie sa réponse, toutes les réponses sont rediffusées.
Une fois que vous avez changé de langue pour une tâche, vous perdez votre ancienneté. 2
La réponse avec le score le plus élevé gagne. 3
Classement par tâche
<style>body{text-align:left!important}#answer-list{padding:10px;width:290px;float:left}#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}</style><script src=https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js></script><link rel=stylesheet href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id=answer-list><table class=answer-list><thead><tr><td>Task<td>Author<td>Language<td>Score<tbody id=answers></table></div><table style=display:none><tbody id=answer-template><tr><td>{{TASK}}<td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}</table><script>function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function process(){answers.forEach(function(e){var s=e.body_markdown.split("\n").filter(function(e){return"#"==e[0]});s.forEach(function(s){var r=s.match(NUMBER_REG)[0],t=(s.match(SIZE_REG)||[0])[0],a=s.match(LANGUAGE_REG)[1],n=e.owner.display_name;entries.push({task:r,user:n,language:a,size:t})})}),entries.sort(function(e,s){var r=e.task-s.task;return r?r:e.size-s.size});for(var e=0;e<entries.length;e++){var s=jQuery("#answer-template").html();s=s.replace("{{TASK}}",entries[e].task).replace("{{NAME}}",entries[e].user).replace("{{LANGUAGE}}",entries[e].language).replace("{{SIZE}}",entries[e].size),s=jQuery(s),jQuery("#answers").append(s)}}var QUESTION_ID=52152,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*.*?,\s*\[*([^,\]]+)/,entries=[];</script>
Classement combiné (2015-07-30 20:00 UTC)
User / Task 1 2 3 4 5 6 7 8 9 A TOTAL Tie breaker (if any)
DLosc 2 2 3 2 2 2 2 3 2 2 22
Sp3000 2 2 2 2 2 3 2 2 2 2 21
Doorknob 2 2 2 2 2 2 2 2 2 2 20
mathmandan 2 2 2 2 2 2 2 2 2 2 20 Combined byte count.
MickyT 2 2 2 2 2 2 1 2 2 2 19
Alex A. 2 1 2 2 2 2 1 2 2 2 18
Jacob 2 2 2 2 2 1 0 0 0 2 13
alephalpha 2 2 2 0 2 2 0 0 2 0 12
Martin Büttner 2 0 0 2 2 0 0 2 2 2 12 Combined byte count.
kirbyfan64sos 1 2 2 0 2 X 0 2 0 3 12 Per-language wins.
Maltysen 3 0 0 0 3 2 1 X 2 0 11
plannapus 2 2 0 0 2 2 0 2 0 2 10
jimmy23013 0 0 2 3 0 0 3 2 0 0 10 Solved tasks.
Tom 0 3 0 0 2 2 0 X 3 0 10 Combined byte count.
FryAmTheEggman 1 0 2 0 2 0 2 0 2 0 9
Vioz- 1 0 2 2 2 2 0 0 0 0 9 Combined byte count.
Toby Speight 2 0 0 0 2 2 0 0 0 2 8
Ismael Miguel 0 0 0 0 2 2 0 0 0 2 6
Pulga 0 2 2 0 0 0 0 0 0 2 6 Combined byte count.
flawr 2 0 2 0 0 0 0 0 0 0 4
manatwork 2 0 0 0 0 2 0 0 0 0 4 Combined byte count.
TheNumberOne 1 0 0 0 2 0 0 0 0 0 3
Les tâches marquées avec X
sont présentes mais non valides.
Le classement combiné a été construit à la main. S'il vous plaît dites-moi s'il y a des erreurs.
1 Les langues sont considérées différentes si elles ne sont pas des versions différentes de la même langue. Il n'y a donc qu'un seul JavaScript, un Python et un TI-BASIC, mais C, C ++, Octave et MATLAB sont quatre langues différentes.
2 Si vous résolvez la tâche n en utilisant la langue L en x octets, une autre personne résout la même tâche dans la même langue avec le même nombre d'octets. Vous passez en langue M et annulez votre modification, l'autre répondeur conserve le point bonus.
3 Le nombre de points obtenus avec les règles de notation 1, 2 et 3 (dans cet ordre), le nombre total d'octets combinés de toutes les tâches résolues (plus bas est le nombre de points) et, finalement, le décompte des voix (plus le nombre de points est élevé) sert de départage.
Réponses:
Tâche 1, GolfScript, 8 octets
Même idée que celle de Martin dans sa réponse.
Tâche 2, QBasic,
7471 octetsTesté sur QB64 avec extension de syntaxe désactivée. 1 Le gros du programme teste si le nombre donné
a
est premier en prenanta
mod chaque nombre 2 <=i
<a
et en multipliant les résultats. Le résultat estr
0 si le nombre n'est pas premier et différent de zéro sinon. La dernière ligne utilise bitwiseAND
avec une division entière par 2 pour vérifier si la représentation binaire dea
est tout un, c'esta
-à- dire de la forme 2 n -1. Multiplier ceci parr
donne 0 (faux) si un nombre n'est pas un nombre premier de Mersenne et une valeur différente de zéro (vérité) dans le cas contraire.?
est un raccourci pourPRINT
.La plus grande prime de Mersenne que j'ai testée, 8191, donne un résultat de
1.#INF
- qui est toujours la vérité! (J'ai vérifié avec uneIF
déclaration pour être sûr.)1 Cela ne change pas la sémantique du programme. Si vous tapez le code ci-dessus dans le DOS QBasic standard, il sera automatiquement mis en forme avec des espaces supplémentaires, mais le résultat sera identique.
Tâche 3, Pyth, 6 octets
Lit une liste de style Python à partir de stdin. La magie principale ici est l'
c
opérateur de saut: donné un int et une liste, il divise la liste en n morceaux. Donc,c2SQ
coupe la liste des entrées triées en deux. De manière pratique, lorsque la longueur est impaire, la première moitié est la plus grande, de sorte que la médiane est toujours le dernier élément de la première moitié. C'est lee
deuxième duh
ead des résultats de cannibalisation.Tâche 4, CJam, 26 octets
Cela pourrait être raccourci, je suppose.
Algorithme:
Le fait que ce soit une boucle do-while tient compte du cas 0.
Tâche 5, Bash, 50 octets
Pas grand chose à expliquer.
Tâche 6, Python, 78 octets
Requiert Python 2. Les opérateurs d'inégalité d'enchaînement de Python peuvent être bien exploités ici.
Tâche 7, ActionScript, 82 octets
ActionScript fait partie de la famille ECMAScript. Ce code nécessite ActionScript 2, ce qui est bien meilleur pour le code golf, car je peux utiliser des fonctions obsolètes comme
chr
au lieu de la version 3String.fromCharCode
!La sortie est dans le volet de la console:
Tâche 8, Pip,
9 à19 octetsLa solution regex ne fonctionnant pas tout à fait, voici donc une solution avec des opérations sur les chaînes.
Dépôt Github pour Pip .
Prend les deux chaînes comme arguments de ligne de commande. Quand
a
est une sous-séquence, sort un entier positif (vérité); sinon, le résultat est nil (falsy), ce qui ne produit aucun résultat.Explication:
Tâche 9, Prolog (SWI), 68 octets
Prolog n’est généralement pas du tout compétitif en code-golf, je suis donc plutôt satisfait de cette solution.
Définit un prédicat
m
avec des paramètres d'entréeL
pour la liste etN
pour le nombre et le paramètre de sortieR
. La définition dem
est une triple disjonction:L
peut être unifié avec[H|T]
, c’est une liste avec au moins un élément. Appelezm
récursivement en tête et en fin de liste et réassemblez les résultats dans une nouvelle liste unifiée avecR
.L
peut être unifié avec[]
, unifiezR
avec[]
aussi.L
est supposé être un nombre;L*N
est calculé et affecté àR
.Exemple exécuté avec
swipl
Ubuntu:Tâche 10, C,
114112106 octetsTesté avec
gcc
sur Ubuntu. Définit une fonctiont
qui prend un argument entier. Utilise troisfor
boucles pour la sortie, fortement condensées via les macro-abus. L’utilisation du caractère de retour arrière pour effacer les~
résultats de fin dans un motif d’espace assez étrange, maisThe output may be surrounded by any amount of whitespace as long as it looks like in the example.
Exemple d'exécution de
t(3)
:la source
a.c
comme une sous-séquence deabc
.Huzzah, d'abord pour terminer toutes les tâches! \ o /
Tâche 1, Perl, 32 octets
+1 octet pour le
-p
drapeau. Commentaire: Perl est bizarre .Tâche 2, CJam, 14 octets
Mon premier programme CJam!
Tâche 3, GolfScript, 8 octets
Évaluez l'entrée STDIN, triez, prenez la longueur, décrémentez, divisez par deux, puis prenez l'élément du tableau trié à cet index.
Tâche 4, Python, 77 octets
Merci à @ mbomb007 pour avoir rasé 24 (!) Octets et à @ Sp3000 pour 11 autres.
Tâche 5, Java, 66 octets
Ennuyeuse. A assommé une langue verbeuse ici pour économiser de la place pour les langues plus golfeuses plus tard.
Tâche 6, Bash, 39 octets
Merci à @manatwork de m'avoir parlé de la suppression de
%j
10 octets dans le processus.Tâche 7, JavaScript, 148 octets
Générez une chaîne de 64
x
, puis remplacez-les tous par une fonction de rappel qui retourne un de ces caractères au hasard, si elle ne figure pas déjà dans le tableau des caractères utilisés.Tâche 8, rouille, 130 octets
Oui, Rust joue vraiment très mal au golf.
Tâche 9, autruche, 18 octets
Version 0.7.0 . Inspecte le tableau, remplace-t-on par une expression rationnelle pour remplacer les nombres par leurs versions multipliées, puis évalue à nouveau la chaîne résultante.
Tâche 10, Ruby, 58 octets
"\n"
est un caractère plus long que"{actual newline}"
, ce qui est un caractère plus long que$/
. Merci à @ MartinBüttner d’avoir rasé {nombre indéterminé mais grand} octets avec diverses astuces de magie noire.la source
$(…)
→`…`
.[ `date +%j` = 001 ]
Ou même((`date +%j`<2))
. (En supposant que GNUdate
, qui supporte certainement le format «% j jour de l'année (001..366)».)Tâche 1, 3var,
14 à13 octets( Page wiki Esolang pour 3var )
Prend la saisie via un point de code, par exemple, l’espace est 32.
Heureusement, toutes les opérations nécessaires à l’implémentation de la formule
n^2 (n-1)^2 / 4
sont des caractères uniques (décrémentation, multiplication et quadrature), mais il faut 3 octets pour définir la valeurB
sur 2 (reset-increment-increment).Tâche 2, Retina,
3833 octets( Référentiel Github pour Retina )
Chaque ligne est placée dans un fichier séparé, mais vous pouvez tester ce qui précède tel quel avec l'
-s
indicateur (en le remplaçant<empty>
par rien). Les entrées doivent être unaires avec 1, par exemple1111111
pour 7.Voici ce que fait chaque substitution de regex (spécifiée par une paire de lignes):
2
,1 + composite
ounot power of 2
par rien.Cela ajoute un extra
1
aux nombres premiers de Mersenne, tandis que tous les autres nombres sont effacés.Tâche 3, Raquette, 71 octets
Les langues de type Lisp sont trop verbeuses. Exemple d'exécution:
Tâche 4,> <>, 31 octets
( Page wiki Esolang pour> <> )
Ce qui précède est de 28 octets et requiert l’
-v
indicateur dans l’interpréteur Python pendant 3 autres octets , par exemple, comme ceci:La bonne chose à propos de> <> ici est que nous pouvons calculer les chiffres un par un via modulo et division, ce qui donne les chiffres dans l’ordre inverse, ce qui est parfait pour imprimer sur une pile.
Tâche 5, Parenthèse,
14481386 octets( Référentiel Github pour Parenthetic )
J'ai une réponse CJam pour cela qui est plus courte que la chaîne elle-même, mais je ne peux pas l'utiliser, alors j'ai pensé que j'irais dans l'autre sens.
Code générateur Python 3:
Voici le code de type Lisp correspondant:
Apparemment, il était normal de remplacer
define
parg
as()()
, ce qui économisait beaucoup d'octets.Tâche 6, CJam, 26 octets
Vérifie que la
[month day]
partie du tableau d'heure locale est inférieure à[1, 2]
.Tâche 7, Python, 73 octets
Juste une implémentation simple de Python 3.
Tâche 8, Prélude,
4641 octets( Page wiki Esolang pour Prelude )
Je pense que cela fonctionne - c'est probablement encore golfable, mais c'est la première fois que je fais un golf non trivial dans Prelude. Le format d'entrée est
<needle>NUL<haystack>
, oùNUL
est0x00
. Cela fonctionne mieux avecNUMERIC_OUTPUT = True
l'interpréteur Python, car cela le rendra en sortie1
ou0
approprié.J'ai choisi Prelude parce qu'il y a deux propriétés qui le rendent très agréable pour cette tâche:
Cela aurait été encore mieux si Prelude avait un opérateur NOT.
Voici la ventilation:
(-5 octets grâce à @ MartinBüttner)
Tâche 9, Mathematica, 4 octets
Quelque chose ressemble à
2 {{0, 1}, {1, 0}}
la multiplication implicite dans Mathematica, cela met donc les arguments côte à côte.Comme le notent @MartinButtner et @alephalpha , il
1##&
existe une autre réponse sur 4 octets. Voir le premier pour une explication.Tâche 10, Rail,
246237 octets( Page wiki Esolang pour Rail )
Je ne pouvais pas laisser passer l'occasion de faire une tâche liée au train dans Rail :) Les espaces semblent assez golfables, mais avec les branches prenant trois lignes, il faudra un peu de travail pour se compacter.
L'entrée est un entier via STDIN, mais il doit y avoir un EOF. La partie en haut à gauche
est une boucle atoi qui convertit l’entrée en un entier non EOF (vérifié par l’
e
instruction).La fonction
f
sur les trois dernières lignes prendx, y, n
et sort lesx
n
temps de chaîne , séparés pary
. La fonction est récursive, avec unen
décrémentation de un à chaque fois jusqu'à devenir zéro.f
est appelé trois fois, fournissant différentes chaînes pour chaque ligne. Bizarrement, Rail permet aux noms de variables d'être vides, ce qui économise quelques octets.La plupart des octets viennent malheureusement de
(!x!)
, ce qui fait apparaître le haut de la pile et l’assigne à variablex
, et(x)
qui poussex
sur la pile. Cela est nécessaire car il n'y a pas d'opérateur en double dans Rail, c'est donc(!x!)(x)(x)
le seul moyen de copier le haut de la pile.la source
Tâche 1, CJam, 7 octets
Je voulais juste obtenir la solution CJam optimale (vraisemblablement) pour cela en. Elle tient compte du fait que la somme des n premiers cubes est le carré du nième nombre triangulaire, qui est elle-même la somme des n premiers entiers.
Testez-le ici.
Tâche 4, Fission,
17388786968 octetsDépôt GitHub pour la fission.
Mon deuxième programme de fission raisonnablement compliqué. :)
Le format d'entrée est un peu bizarre. Pour prendre en charge les entrées négatives, le premier caractère est censé être soit le
+
soit-
le signe. La valeur d'octet du second caractère est alors la magnitude de l'entrée (puisque Fission ne peut pas lire de manière native des entiers décimaux). Donc, si vous voulez,111
vous pouvez le transmettre+o
à STDIN. Et si vous voulez,-56
vous le passez-8
. À la place de+
et-
vous pouvez utiliser n’importe quel caractère avec un code de caractère inférieur ou supérieur, respectivement. Cela peut être utile de passer quelque chose comme-n
(que votreecho
gâterie pourrait comme argument) comme, par exemple,0n
.Voyons comment trouver la représentation négabinaire d'un nombre positif. Nous voulons calculer le nombre du bit le moins significatif au bit le plus significatif (nous allons placer ces bits sur une pile et les imprimer tous à la fin pour les obtenir dans le bon ordre). Le premier chiffre correspond alors simplement à la parité du nombre, et nous divisons le nombre entier par 2 pour continuer le traitement. Le chiffre suivant est maintenant négatif (avec la valeur -2) - mais il convient de noter que ce bit sera défini chaque fois que le bit 2 sera défini dans un nombre binaire normal. La seule différence est que nous devons contrer le -2 avec des chiffres positifs plus élevés. Nous faisons donc ceci:
1
, nous incrémentons le nombre restant de 1 afin de neutraliser le bit négatif (la différence entre un négatif et un bit correspond une fois à la valeur du prochain bit le plus significatif).Une grande simplification des résultats du code de remarquer que l' ajout d' une condition ici équivaut à arrondir le nombre jusqu'à quand entier divisant (si le bit mis au rebut était 1, on incrémente le résultat divisé entier par 1).
Ensuite, le bit suivant est simplement une valeur positive afin que nous puissions le déterminer normalement. Cela signifie que nous voulons une boucle qui calcule deux bits à la fois, en alternant les valeurs arrondies vers le haut et le bas, mais nous souhaitons entrer la boucle au milieu de manière à commencer par arrondir.
Comment pouvons-nous gérer des entiers négatifs? Le problème est que Fission ne peut pas vraiment faire de l'arithmétique arbitraire sur les entiers négatifs, car les masses sont toujours non négatives. Il faudrait donc faire quelque chose de vraiment compliqué, comme travailler avec l’ampleur et garder le signe ailleurs. Cependant, la représentation négative d'un nombre négatif peut être calculée en fonction d'un nombre positif associé:
Si n est négatif, calculez la représentation négabinaire de n / 2 (arrondi au- dessus ) et ajoutez la parité de n .
C'est exactement la première étape de notre boucle à deux bits. Il suffit donc de commencer la boucle à un point différent si le signe est négatif.
La plupart des économies réalisées sur les 173 octets d'origine provenaient de ces informations, ce qui m'a permis de compresser trois contrôles de parité et une boucle à deux sections en une seule boucle avec un seul contrôle de parité.
Ce message deviendra trop long si j'explique tout le code en détail, mais je vais indiquer quelques sections pour donner une présentation approximative du flux de contrôle. Vous pouvez alors brouiller les détails avec la référence Fission.
En commençant par le
D
, cela lit un signe dans l'énergie et la magnitude dans la masse d'un atome qui aboutit dans le[
(allant à droite). Ce bit de signe alternera après chaque passage du contrôle de parité et déterminera si nous conservons la moitié arrondie vers le haut ou la moitié supérieure de l’entrée de la boucle.C'est la boucle qui calcule les bits individuels et alimente la moitié correcte dans la prochaine itération. Le
S
et leJ
sont utilisés pour créer une copie de la moitié droite en fonction du bit de signe actuel, leX
s effectue la copie. Le>
coin en haut à droite calcule le bit réel qui est ensuite envoyé à la pileK
pour être récupéré plus tard. Je pense que la disposition du coin en haut à droite est très chouette et qu'il vaut vraiment la peine d'étudier en détail si vous êtes intéressé par Fission.Le
%
est un commutateur qui renvoie le nombre dans la boucle tant qu'il est supérieur à 0.Une fois que le nombre atteint 0, il est reflété à la place. Cela démarre une autre boucle qui extrait les bits de la pile, les ajoute au code de caractère de
0
et les imprime avecO
. Le programme se termine une fois que la pile est vide, car l'atome de contrôle finira par être poussé sur la pile (et ensuite, il ne restera plus d'atomes en mouvement).Tâche 5, Prélude,
21917996 octetsPage Esolangs pour Prélude.
Stack Snippet interpreter pour Prelude.
Cela a commencé comme un programme Prelude standard à sortie fixe, fabriqué à la main, avec trois voix. Après quelques discussions avec Sp3000, j'ai décidé d'essayer une seule voix. Il s'est avéré que cela fonctionnait très bien, car il est beaucoup plus facile de réutiliser des lettres plus anciennes. Ensuite, Dennis m'a donné quelques indices et j'ai trouvé la version actuelle: l'idée est de placer tous les décalages de la lettre
h
sur la pile d'une seule voix dans l'ordre inverse, puis de les imprimer un par un en boucle.h
est choisi parce qu'il n'y a pash
de chaîne (ce qui est important - sinon le0
décalage mettrait fin à la boucle) et parce qu'il minimise le codage des décalages en termes de décalages à deux chiffres et négatifs.L'encodage offset a été généré avec ce script CJam .
Tâche 8, Mathematica, 28 octets
Yay pour les built-ins. (La dénomination de Mathematica est un peu bizarre ici ...
LongestCommonSubsequence
trouve le plus commun sous - chaîne enLongestCommonSequence
trouve le plus commun sous- séquence .)Tâche 9, J, 1 octet
Identique à l’APL et à K, mais il semble que personne n’a encore pris J.
Tâche 10, rétine,
67 à60 octetsDépôt GitHub pour Retina.
Chaque ligne est placée dans un fichier séparé et
<LF>
doit être remplacée par un caractère de nouvelle ligne et<empty>
doit être un fichier vide. Vous pouvez également mettre tout cela dans un seul fichier et utiliser l'-s
option, mais cela ne permet pas d'incorporer des caractères de nouvelle ligne à la place de<LF>
. Vous pouvez imiter cela en faisant quelque chose commeComme le montre l'exemple ci-dessus, l'entrée devrait être unaire. L'idée du code est de créer trois copies de l'entrée unaire (moins 1), chacune avec une copie de la ligne correspondante. Ensuite, nous répétons les neuf derniers caractères devant un
1
jusqu'à ce que tous les1
s disparaissent, répétant ainsi les lignes si nécessaire. Enfin, nous supprimons la traînée étrangère~
.la source
Eh, je vais commencer avec un couple, je suppose. Première fois golf.
Tâche 1, Python,
3821 octetsSomme une liste de tous les cubes jusqu'à x. Expression modifiée grâce à xnor
Tâche 2, TI-Basic 89, 244 octets
Pas certain à 100% sur celui-ci, testera quand je trouverai de nouvelles piles pour ma calculatrice. isPrime est une propriété intégrée, ipart est une partie entière (2.3 -> 2)
Tâche 3, Perl,
45 à34 octetsfichier perl 1 2 3 4 -> 2. Sauvegardé quelques octets grâce à @nutki. Imprimé plutôt que d'enregistrer en variable, puis en imprimant variable.
Tâche 4, Ruby,
43 à40 octetsAu moins, ça marche en 1.9, je ne sais pas pour 1.8. En binaire, '10' * 16 (ou 2863311530) plus un nombre, xor avec celui 10101010 ... est le negbinary. Affiche une représentation sous forme de chaîne avec des guillemets (3 -> "111" plutôt que 3 -> 111). Impossible de trouver des maths pour écrire x en moins de caractères.
Tâche 5, Malbolge,
682354 octetsTestez en ligne ici Pensez que ceci est aussi court que possible. J'ai joué au golf autant que j'ai pu. Sauvegardé 300 octets, alors quand?
Tâche 6, bash,
625040 octetsDécouvert à propos de% j à partir d'un autre post.
Tâche 10, Befunge-98, 121 octets
Changé pour befunge-98. Old était Befunge-93,
227 157147 octets. Fungi utilisé , écrit en Haskell pour les tests. Utilisé le "faire plusieurs fois k" et en ajoutant des caractères uniques à la pile avec '. J'ai l'impression qu'il est possible de jouer au golf jusqu'à 110 ou moins, mais j'ai déjà passé beaucoup trop de temps là-dessus ...la source
lambda n:(n*n-n)**2/4
0=fPart(expression) rather than
iPart (expression) = expression` dans votre réponse TI-89 BASIC.Première chose: la tâche 6 ne compte techniquement PAS ; J'ai téléchargé unc il y a moins d'une heure. Cependant, je l'ai presque téléchargé ce matin, mais j'ai d'abord décidé d'écrire une suite de tests. Idiot.
En tout cas, voilà!
Notez que la plupart des choses unc sont intentionnellement en arrière, c'est-à-
&&
dire vraiment , etc.||
, raison pour laquelle certaines opérations semblent bizarres (par exemple, utiliser-
pour calculer le cube).Tâche 1, Haskell, 21 octets
Tâche 2, Hy, 135 octets
Tâche 3, Dart, 37 octets
Ma première fonction Dart!
Tâche 5, INTERCAL, 1047 octets
Tâche 6, unc, 157 octets
Tâche 8, rs, 42 octets
Démo en direct.
Tâche 10, Pyth, 46 octets
Démo en direct.
la source
!include
s. Je ne sais pas trop lequel.stdio.h
, la seconde esttime.h
. J'ai besoin des deux.unc
pour compiler le code C? GCC fonctionnera très bien sansstdio.h
. Pas sûr detime.h
.Tâche 1, APL, 7 octets
Vous pouvez l’ essayer en ligne avec ngn / apl, bien que cela fonctionne avec toutes les implémentations APL dont la valeur par défaut est 0.
Cela met chaque entier de 0 à l'entrée (
⍳⎕
) -1 en commutant (⍨
) les arguments de l'opérateur en charge (*
). Le vecteur résultant est réduit par sommation (+/
) et un scalaire est renvoyé.Tâche 2, Julia, 42 octets
Cela crée une fonction anonyme qui accepte en tant qu'entier en entrée et retourne un booléen. Pour l'appeler, donnez-lui un nom, par exemple
f=n->...
.En premier lieu, nous utilisons la fonction intégrée de Julia
isprime
pour vérifier si ellen
est primordiale. Si c'est le cas, nous vérifions qu'illog2(n+1)
s'agit d'un entier. Si c'est le cas,n
peut être écrit comme2^k-1
pour certainsk
, etn
est donc un prime de Mersenne.Tâche 3, ELI , 19 octets
Cela crée une monade
f
qui renvoie la médiane du vecteur d’entrée.Ungolfed + explication:
Exemples:
Tâche 4, octave, 39 octets
Cela crée un descripteur de fonction qui accepte un entier en entrée et retourne la chaîne négabinaire associée. Pour l'appeler, nommez-le, par exemple
f=@...
, et lancez avecfeval(f, <input>)
.Vous pouvez l' essayer en ligne .
Tâche 5, CJam, 47 octets
La chaîne est simplement imprimée sur STDOUT. Vous pouvez l' essayer en ligne si vous vous sentez si enclin.
Tâche 6, batch Windows, 46 octets
La variable
%date%
contient la date du jour dans le formulaireThu 06/25/2015
. Nous pouvons sélectionner le mois et le jour en obtenant la sous - chaîne de longueur 5 après avoir sauté les 4 premiers caractères:%date:~4,5%
. À partir de là, nous vérifions si c'est le 1er janvier et disons bonne année si c'est le cas.Tâche 7, Pyth, 26 octets
Nous
G
attribuons d’ abord la plage 13312 à 19894 inclus. Ensuite, nous bouclons 64 fois, et à chaque itération, nous shuffleG
(.SG
), retirons et renvoyons le dernier élément (.(
), et imprimons sa représentation de caractère (pC
).Vous pouvez l' essayer en ligne .
Tâche 8, Ruby, 36 octets
Ceci définit une fonction
f
qui accepte deux chaînesa
etb
, oùa
est la chaîne à rechercherb
.Tout, à l'exception des caractères,
a
est supprimé de l'b
utilisation.tr()
et nous vérifions si le résultat contienta
exactement utiliser[]
. Cela retourneranil
si la chaîne n'est pas trouvée, ainsi nous pouvons obtenir une valeur booléenne en utilisant!
avec.nil?
.Tâche 9, R, 16 octets
Cela crée un objet fonction non nommé qui accepte tout type de tableau ou de matrice
x
et un entiern
et multiplie chaque élémentx
parn
. Si vous le souhaitez, vous pouvez l' essayer en ligne .Tâche 10, Python 3, 92 octets
Assez simple. Vous pouvez l' essayer en ligne .
la source
Tâche 1,> <>, 10 + 3 = 13 octets
Exécutez cette opération en utilisant l’ interpréteur Python officiel en utilisant le
-v
drapeau (pour un coût de 3 octets). Cela équivaut à diviser par la quantité(n - n*n)
et à diviser par4
ce qui équivaut bien sûr à quadriller(n*n - n)
et diviser par4
.Tâche 2, GAP,
6362 octets(Vous avez sauvegardé un espace en écrivant l'égalité à l'envers.)
Tâche 3, R,
4339 octetsMerci à Plannapus pour cette belle amélioration!
Tâche 4, Piet,
1551351155 * 19 = 95 codelsTestez à l'aide de cet interprète en ligne , de taille 13 ou utilisez votre interprète préféré - faites-moi savoir si vous en avez un que vous aimez!
Le rendre en sortie
0
au lieu de la chaîne vide pour l'entrée0
était peu pratique. J'ai utilisé un si-alors près du début pour prendre soin de cette affaire; puis une boucle while pour calculer les chiffres dans le cas non nul, et enfin une autre boucle while à la fin pour sortir les chiffres de la pile.Merci beaucoup à Sp3000 pour ces commentaires très utiles qui m'ont aidé à économiser des codes!
Tâche 5, Lua, 52 octets
Vous pouvez l'essayer ici .
Tâche 6, LaTeX,
157139136127128 octetsSi le produit du jour et du mois est
1
, imprimez le message; sinon rien. (Le jour du Nouvel An est particulièrement pratique pour cette conception: comme le résultat recherché est1
, nous n'avons besoin que d'uneor
instruction. L' énoncén
thor
spécifie le comportement de la valeurn
.)Remarque: la version précédente manquait dans ma version précédente, ce qui était une erreur. (J'ai essayé de tester cette fonction, mais le tester correctement pourrait prendre un peu de temps ...)
Ma version originale utilisait le
calc
package, ce qui était beaucoup plus pratique que ma version actuelle. Quelque chose à garder à l'esprit pour la "vraie vie"!Tâche 7, Ruby, 62 octets
Tâche 8, JavaScript, 78 octets
Solution récursive, testant si
l
est une sous-chaîne dem
. Sil
est vide, alors les!l
résultatstrue
et la fonction se terminent. (Dans ce cas,l[0]
non défini, mais JavaScript convient à cela.) Sinon, il recherche la première instance del[0]
inm
. Si elle ne trouve pas un, puism.indexOf(l[0])
entraîne-1
et ainsi lesu
résultats en0
et les fonctions se termine.Sinon, il supprime la première entrée
l
et les premièresu
entréesm
et continue de vérifier.Tâche 9, Python,
72 à60 octetsDétaille au "niveau le plus bas", où
a
n'est plus une liste, mais un entier, puis effectue la multiplication.Merci à Dennis de m'avoir sauvé 12 octets!
Tâche 10, Groovy, 81 octets
Essayez ici . A l'origine, j'avais essayé d'implémenter quelque chose comme la
.join()
méthode de Python pour les chaînes, qui associe des chaînes avec une "chaîne de liaison" particulière (comme les liens entre les wagons de train). Mais cela a coûté beaucoup plus que ce qu’il a économisé.J'espère que je n'ai pas manqué à toutes les conventions pour des réponses acceptables dans ces différentes langues, mais s'il vous plaît, laissez-moi savoir si c'est le cas.
Merci à Dennis pour ce défi fantastique!
la source
except:return n*a
enregistre quelques octets pour la tâche 9. Pour la tâche 1, le-v
drapeau est considéré comme un octet.-v
drapeau pari
(bien que je pense que ce serait bien si les deux versions étaient mentionnées, pour des tests plus faciles).-
,v
). Je voulais juste dire que vous avez la possibilité de prendre une entrée en tant que point de code via l'i
instruction.Tâche 1, Pyth, 5 octets
Prend le numéro de stdin. Merci @Jakube pour nous avoir signalé l'inutile
U
.Tâche 6, javascript, 56 octets
Tâche 7, CJam, 16 octets
Génère une plage, mélange, choisit en premier 64 et mappe l’addition de la valeur de départ et la conversion en caractère. 14 caractères, 16 octets.
Tâche 8, octave, 23 octets
Définit la fonction anonyme.
Tâche 5, PHP, 45 octets
Pas de compression, juste des impressions.
Tâche 9, APL 1 octet
La même chose que la réponse K.
la source
.slice(4, 10)
?/an 01/.test(Date())
.)Tâche 1, R,
2119 octetsAssez simple. Entrée de STDIN.
Tâche 2, Perl,
40 à66 octetsAjout d'un vérificateur principal (regex du vérificateur de nombres premiers Abigails)
Tâche 3, PARI / GP,
2422 octetsLa première fois que j'ai touché ceci. Il faudra peut-être en apprendre un peu plus.
Tâche 4, T-SQL, 235 octets
Fonction de table en ligne utilisant un CTE récursif. Très grand, mais amusant à faire.
Utiliser
Tâche 5, GAP, 48 octets
Tâche 6, Excel,
5148 octetsMerci à @Bond pour les 3 octets.
Tâche 7, Python 2.6,
989385 octetsC'est la première fois que j'essaie de faire quelque chose en Python, alors ça pourrait être beaucoup mieux. Merci @Dennis et @Jacob pour les bons conseils
Tâche 8, TCL, 57 octets
Dommage que la suppression des espaces tue cette
Tâche 9, brochet, 53 octets
Une fonction qui retourne le tableau multiplié
Tâche 10, Powershell, 88 octets
Une fonction Powershell. Je pense pouvoir le raccourcir un peu, mais le voici pour le moment.
Et enfin fini :)
la source
=IF(TEXT(NOW(),"md")="11","Happy New Year!","")
.l[:63]
devrait fonctionner et il(13312,19894)
est plus court que les constantes hexadécimales (et la somme).range(19892,0x4DB5+1)
je l'[19892, 19893]
Tâche 2, J, 10 octets
Prépose un booléen 0 ou 1 à l'avance si l'entrée est primordiale à sa représentation binaire, puis prend le produit. Fonctionne sur la version actuelle de J.
Tâche 5, HTML, 45 octets
Tâche 6, poisson, 53 octets
Basé sur la réponse bash.
Tâche 8, APL, 12 octets
Ceci est une expression de fonction. Il compare l'ordre des caractères trouvés dans la plus grande chaîne avec ce à quoi on pourrait s'attendre s'ils étaient triés.
Tâche 9, K, 1 octet
Devrait fonctionner dans n'importe quelle version. Les opérations arithmétiques distribuent sur des tableaux.
la source
abc
caxbxc
.Tâche 1, Ruby, 40 octets
La première fois que j'écris quelque chose en ruby. Testé avec du rubis 1.8.7.
Tâche 2, R, 50 octets
Calcule
p
, vérifie s'il s'agit d'un entier et si n et p sont des nombres premiers.Tâche 5, PostgreSQL, 54 octets
Tâche 6, Lua, 55 octets
Tâche 8, Python, 65 octets
Usage:
Tâche 10, Julia, 73 octets
Merci à @AlexA. pour avoir aidé à raccourcir ce code! Exemple de sorties:
la source
log2
f(n)=
parn->
) et en changeant1:(9*n-1)
simplement1:9n-1
.\n
comme 1 octet, par habitude.(" "*"_"^6*" ")^n
, vous pouvez utiliser" ______ "^n
(de même pour la| |
partie). 70 octets:n->print(" ______ "^n*"\n"*"| | "^n*"\n"*(" ()--() ~"^n)[1:9n-1])
. (Les espaces entre les barres ne s'affichent pas ici cependant)Tâche 1, Haskell, 17 octets
Tâche 2, Mathematica, 30 octets
Tâche 3, JavaScript, 46 octets
Tâche 5, MATLAB, 47 octets
Tâche 6, Ruby, 56 octets
Tâche 7, Python, 106 octets (en retrait avec
\t
)Notez que l’utilisation directe de
list(set(s))
ne fonctionne pas ici car cela entraînera une distribution de probabilité non uniforme dans l'espace de toutes les chaînes possibles en raison de la réorganisation des membres de la liste.la source
(x*x-x)^2/4
?if c not in s:s+=c
tout mettre sur une seule ligne, en enregistrant quelques caractères.0x3400
Peut aussi être remplacé par13312
, ce qui est un caractère plus court (et pareillement pour 0x4db5). Enfin, le nombre de caractères ne changera pas, mais si vous n'aimez pas l'indentation des tabulations, vous pouvez l'indenter d'un seul espace.Tâche 1, Haskell, 15 octets
Tâche 2, Julia, 28 octets
Tâche 3, octave, 30 octets
Tâche 5, Yacas , 45 octets
Tâche 6, Mathematica, 46 octets
Tâche 9, PARI / GP, 10 octets
la source
Tâche 3, Clip, 13 octets
Une autre version:
le
`
semblait coûter trop cher.Tâche 4, KSFTgolf, 16 octets
L'interprète est ici.Je ne suis pas sûr de ce que je suis en train de faire ... Cela imprimera le négatif puis se plantera.
Il y a un bug dans l'interprète. Ou je pourrai réduire jusqu'à 12 octets en utilisant la conversion de base intégrée (mais cela ne fonctionne qu'avec les entiers positifs):
Version originale de CJam:
J'ai essayé Pip, Autruche, Clip et Burlesque pour savoir s'il existe un esolang avec negabinary intégré. Aucun d'entre eux a travaillé. KSFTgolf utilisé
numpy
, qui semblait avoir un comportement étrange quand la base est négative. Mais ce n'est pas facile de le faire fonctionner avec des nombres non positifs.Tâche 7, CJam, 15 octets
Tâche 8, APL, 21 octets
Essayez-le en ligne.
la source
Tâche 2, x86 masm, 40 octets
(à l'exclusion de l'en-tête, de MessageBox, etc. - octets pertinents uniquement)
Tâche 3, C, 136 octets
Compiler en utilisant
gcc -o Prime main.c
Tâche 10, C ++, 478 octets
Compiler en utilisant
g++ -o Trucks main.cpp
C & C ++ peut être raccourci mais cela ajouterait une erreur du compilateur. Ne connaissant pas les règles exactes, j'ai essayé de laisser du code sans erreurs de compilation.
la source
Tâche 1, Python, 35 octets
Tâche 3, CJam, 9 octets
Tâche 4, JavaScript,
5553 octetsTâche 5, Pyth, 46 octets
Tâche 6, C #, 65 octets
la source
Tâche 1, jq, 24 octets
Tâche 6, PostgreSQL, 54 octets
la source
Tâche 1, Cjam, 7 octets
Edit: Je viens de remarquer que Martin a posté ceci avant moi. Je vais essayer autre chose ...
Tâche 3, Python, 30 octets
Python 2.
Tâche 5, ///, 45 octets
/// fera juste écho quelque chose sans aucun
/
caractère.Tâche 7, Pyth, 19 octets
Programme. S'il te plaît, dis-moi si j'ai tout gâché. Essayez-le ici
Tâche 9, octave, 9 octets
Poignée de fonction anonyme. Octave le fait automatiquement avec matrix * scalar.
la source
.S
shuffle, et vous pouvez utilisers
um au lieu dejk
.Je n'ai pas trouvé le temps de toutes les essayer, mais voici un début
Tâche 1, courant continu, 8 octets
Entrée et sortie en haut de la pile, selon
dc
convention.Tâche 5, Emacs Lisp, 46 octets
Abus des règles:
Le mieux que j'ai pu gérer en décompressant à partir d'une forme compressée était de 55, en Perl:
(Les caractères non imprimables ci-dessus sont déformés par SE, mais comme ce n'est pas ma réponse, je ne la répare pas)
Tâche 6, SQL, 54 octets
Je considère que les dix premiers jours de janvier sont des jours «appropriés» pour cette salutation, mais vous pouvez vous adapter au goût. La
now() LIKE
construction est plus courte que l'extraction du jour de l'annéeDATE_FORMAT(now(),'%j')
.Tâche 10, sed, 58 octets
Entrée en unaire.
la source
strstr
recherche pour les sous-chaînes, pas les sous-séquences. Je crains que la tâche 5 ne soit kolmogorov-complexité, donc extraire le mot d'un dictionnaire peut être malin, mais c'est interdit.Tâche 5, MarioGolf , 50 octets
C'est un langage que j'ai développé depuis un certain temps.
La version actuelle a suffisamment de fonctionnalités pour permettre de lancer ce défi.
Vous pouvez l'essayer en ligne sur http://htmlpreview.github.io/?https://raw.githubusercontent.com/ismael-miguel/mariogolf/master/js/testpage.html#c:Y|<pneumonoultramicroscopicsilicovolcanoconiosis|O
Actuellement, le développement est arrêté et la mise en œuvre est incomplète.
Le dernier engagement a eu lieu le 13 mars 2015.
Tâche 6, PHP, 37 octets
Celui-ci est vraiment facile et amusant!
Tâche 10, Javascript, 121 byes
Ouais, pas si golfé ...
Mais ça fait le travail!
Essayez le:
Afficher l'extrait de code
Le code ne s'affichera pas bien dans l'extrait de pile car il commence par
"
dans la sortie. Des espaces supplémentaires ont été ajoutés pour compenser.Le code d'origine peut être exécuté sur la console de Chrome sans aucun problème et le résultat sera celui attendu.
la source
date(dM)
? Ici, il retourne "25juin". (paramètres régionaux définis sur en_US) Peut-être que «j» et «n» serviraient mieux, car «d» et «m» renvoient les valeurs 0 complétées à la largeur 2.Tâche 1, CJam, 10 octets
Essayez ici
Tâche 5, rétine, 46 octets
la source
Tâche 1, octave, 15 octets
EDIT: Je pensais avoir ajouté ceci, mais il semble que j’ai oublié de sauvegarder: cela utilise le fait que
sum(1^3+2^3+3^3+...+n^3) = sum(1+2+3+...+n)^2 = [n*(n+1)/2]^2
Tâche 3, Javascript, 24 octets
la source
Ok, commençons par les choses faciles:
Tâche 5, ASP, 45 octets
Tâche 6, JavaScript, 46 octets
la source
Tâche 1, VBA, 126 octets
Je ne sais pas comment jouer au golf dans VBA. Je n'ai pas tapé un seul espace, VBA insère automatiquement des espaces.
=f(5)
dans une cellule d'Excel affichera 100.Tâche 2, octave, 32 octets
Tâche 5, Golfscript, 47 octets
Tâche 9, MATLAB, 9 octets
Eh bien, c'est un début ...
la source