var QUESTION_ID=49876;function answersUrl(e){return"http://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 shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table></div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table></div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table><table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table>
A+
etA-
? Je ne vois pas pourquoi nous les ignorons.+
Réponses:
Python 2,
727062 octetsIl s'agit d'une fonction anonyme qui prend un entier et renvoie la note sous forme de chaîne.
(merci à @ MartinBüttner, @grc et @TheNumberOne pour les conseils)
la source
"EDCB"[n/10-6]
->chr(75-n/10)
CJam,
34 3332 octetsD'accord, j'ai essayé plusieurs approches maintenant et je n'arrive pas à obtenir un résultat inférieur à 33, alors voici l'explication:
MISE À JOUR : 1 octet enregistré grâce à un pointeur de Dennis
Essayez-le en ligne ici
la source
s
il?<
Character String -
pousse une chaîne.Rétine, 43 + 15 = 58 octets
Retina est un langage regex créé par Martin Büttner, où les fichiers impairs sont les regex avec lesquels correspondre, et les fichiers pairs sont ce par quoi le remplacer. Chaque ligne est un fichier distinct, j'ai donc ajouté 15 octets pour chaque fichier supplémentaire.
Explication
Il commence par faire quelque chose avec 3 chiffres ou plus un A. Il ajoute un
-
s'il s'agit d'un nombre à deux chiffres se terminant par 0, 1 ou 2, et+
s'il se termine par 7, 8 ou 9. Les nombres sont ensuite mappés sur leur note (par exemple, un nombre commençant par 9 reçoit un B). Tout nombre restant est automatiquement un F.Malheureusement, ilMise à jour: la version 0.5.0 a une sortie intermédiaire désactivée par défaut, ce qui me permet d'économiser quelques octets.;`
doit être ajouté à tous sauf au dernier regex pour supprimer la sortie intermédiaire.la source
\d.*
correspond et remplace la chaîne entière,+
inclus.C, 99 octets
Je suis nouveau ici, j'espère que je suis les règles.
Cette fonction prend la marque comme paramètre et renvoie la note sous forme de chaîne terminée par NULL.
Explication
Espaces ajoutés:
Les variables globales sont automatiquement initialisées à zéro, donc b est rempli de NULL. Étant donné que seuls les deux premiers caractères sont touchés, nous n'avons à nous soucier de mettre un NULL dans b [1] que si le grade n'a qu'un seul caractère. Ce NULL est inséré au tout début de la fonction. Le paramètre n est implicitement int. Si la note est inférieure à 60, elle est définie sur «F», si elle est supérieure à 99, elle est définie sur «A». Dans les autres cas, la note de base est donnée par
'E' - (n - 60) / 10
, ce qui simplifie à75 - n / 10
.n % 10
obtient le chiffre des unités de la marque. S'il est inférieur à 3, alors un - est ajouté, s'il est supérieur à 6, un + est ajouté, sinon b [1] est annulé (ce qu'il était déjà).Cas de test
la source
Pyth, 33 octets
Essayez-le en ligne: démonstration ou suite de tests
Explication:
la source
> <> (Poisson),
7871 octetsMéthode:
x,y,z
de l'entrée. Si un caractère n'est pas présent, la valeur de sa variable sera-1
implicitement. (ord(c)
marquera le point de code du personnagec
)z > 0
(entrée à 3 chiffres) imprimezA
et quittez.x < ord('6') or y < 0
(entrée <60) imprimezF
et quittez.123 - x
.y < ord('4') print
-` et quittez.y > ord('6') print
+ `et quittez.la source
C,
6765Étonnamment, c'est assez proche de la solution python.
Mais pour que ce programme soit si court, il a fallu faire des sacrifices:
Si un
F
ou unA
est impriméprintf
ne regarde même pas les autres arguments passés. C'est un hack assez méchant.Si
(i%10+1)/4
évalue à1
(non+
ou-
doit être ajouté à la note), le%s
formateur reçoit un pointeur sur un\0
octet, donc rien n'est imprimé. Aussi assez drôle, car je ne savais pas que vous pouviez prendre l'adresse d'un littéral de chaîne indexée. (par exemple&"string"[i]
) ( modifier :"string"+i
est encore plus court ! Merci @nutki)Voici la sortie du programme pour les nombres 57 à 102. J'en ai fait un vidage hexadécimal, donc nous pouvons être sûrs qu'aucun
\0
octet bizarre n'a été imprimé.La
main
méthode utilisée:la source
&"string"[i]
est inutile car il équivaut à plus court"string"+i
avec lequel vous pouvez enregistrer 2 octets.CJam,
41393734 octetsC'est beaucoup trop long, mais je ne pense pas que je vais continuer à jouer au golf pour l'instant.
Testez-le ici. Ou exécutez tous les cas de test ici.
Trois octets enregistrés par Optimizer.
Explication
(Légèrement dépassé)
la source
GNU sed, 73 + 1 = 74 octets
Le + 1 correspond au paramètre -r.
la source
Python 2,
94888469 octetsla source
JavaScript (ES6), 66 octets
Tout droit.
la source
R,
10710599 octetsPas un très bon effort, je le crains, mais je vais essayer de jouer au golf plus tard.
Modifier Supprimé quelques
if
s. Correction du cas et un résultat incorrect pour 100.Maintenant, pour se débarrasser du. Je me suis débarrassé de l'ifelse
sifelse
art.la source
LETTERS
plutôt queletters
.Perl,
6662 octetsCela peut probablement être joué plus. Une manière différente pourrait également être meilleure.
+1 pour
-p
Courir avec:
la source
-p
et déposer lesay
?Javascript (ES6),
7879 octetsCe n'est vraiment pas l'option la plus intelligente, mais j'ai fait ce que j'ai pu.
Passez simplement la note sous forme de chaîne , et elle renverra sa lettre de note.
La partie chaîne est très importante.
Vous pouvez vérifier un cas test ici:
Si l'espace supplémentaire après la lettre n'est pas autorisé, je le retirerai avec plaisir.Ça ne l'était pas! Cela a augmenté mon code d'un octet, mais rien de (trop) grave.la source
One newline after output is fine, but keep it consistent.
". Je pense que c'est assez cohérent.C #,
14312711288 octetsJ'ai essayé d'être intelligent en faisant des mods de nombres ASCII, mais il semble que je n'étais pas seul!
Merci à Tim pour ses conseils sur les listes plutôt que sur les ifs.
Merci à DarcyThomas d'avoir souligné que je pouvais utiliser des opérateurs ternaires imbriqués.
la source
[item1,item2][condition]
. Si la condition est True, elle donne le 2e élément, si False le premier.return <condition> ? <true result> : <false result>
notez que vous pouvez également les imbriquer ainsireturn <condition> ? <true result> : <condition> ? <2nd true result> : < 2nd false result>
Haskell, 78 octets
La première ligne semble inutile, coûtant 14 octets, mais je ne pourrais pas trouver une version plus courte sans elle.
Explication
L'opérateur
#
est un raccourci pour créer n copies de son deuxième argument. Lista
est une liste infinie de chaînes "A". La fonctionf
indexe dans une liste de toutes les notes pour n = 0,1, ... La compréhension de la liste construit la "partie médiane" de cette liste (notes E à B);g
est un seul caractère ajouté à la chaînes
(qui peut être vide).Usage
la source
C, 102 octets
}
Usage
la source
dc, 52
Sortie
la source
TI-Basic,
797476 octetsla source
1+
TI-BASIC,
696866 octetsTI-BASIC n'est pas bon pour la manipulation de chaînes.
Saisie sur l'écran d'accueil de la calculatrice, sous la forme de [numéro]: [nom du programme].
Formaté:
Cela peut probablement être joué plus loin.
la source
C #, 82 octets
Voici un violon avec quelques cas de test.
la source
JavaScript (ES6),
8683 octetsCe qui mange vraiment les personnages, c'est la
String.fromCharCode
condition +/- ... Je soupçonne fortement qu'il existe un moyen intelligent de raccourcir au moins l'un d'entre eux.la source
~~(.1*-n+75.9)
->75.9-n/10|0
PHP5,5, 73 octets
Encore une fois, pas le plus court.
Mais ça marche!
Je l'ai classé sous PHP5.5 au lieu de simplement PHP car cela utilise une syntaxe qui n'est valide que pour PHP5.5 et PHP5.6.
Vous pouvez lire sur le déréférencement de chaînes et de tableaux dans le manuel:
http://php.net/manual/en/migration55.new-features.php
la source
Perl, 52
la source
Rubis, 58 octets
Je ne pouvais pas croire qu'il n'y en avait pas de Ruby ici. À la réflexion, c'est assez similaire à certains qui sont déjà là, mais de toute façon:
Essayez-le ici
la source
Excel, 100 octets
la source