Whoa, whoa, whoa ... arrêtez de taper votre programme. Non, je ne veux pas dire "imprimer ABC...
". Je parle des capitales des États-Unis.
Spécifiquement, imprimez toutes les combinaisons ville / état données dans la liste suivante
- dans n'importe quel ordre
- avec votre choix de délimiteurs (par exemple,
Baton Rouge`LA_Indianapolis`IN_...
est acceptable), tant qu'il n'est pas ambigu quels mots sont des villes, qui sont des états et qui sont des entrées différentes
- sans utiliser aucun de
ABCDEFGHIJKLMNOPQRSTUVWXYZ
votre code source
La sortie doit être vers STDOUT ou équivalent.
EDIT - Oups!
<edit>
En tapant la liste de mémoire (grâce aux Animaniacs, comme décrit ci-dessous), j'ai apparemment négligé Washington, DC, qui n'est pas une capitale de l'État, mais qui est dans la chanson, et est parfois incluse dans des "listes de capitales" ( comme la réponse Mathematica ci-dessous). J'avais l'intention d'inclure cette ville dans cette liste, mais je l'ai manqué d'une manière ou d'une autre. Par conséquent, des réponses qui n'ont que la ville ne seront pas pénalisés, et des réponses qui n'ont que la ville ne seront pas pénalisés, que ce soit. Essentiellement, c'est à vous de décider si cela est inclus ou non dans votre sortie. Désolé pour ça, les amis!Washington, DC
</edit>
Baton Rouge, LA
Indianapolis, IN
Columbus, OH
Montgomery, AL
Helena, MT
Denver, CO
Boise, ID
Austin, TX
Boston, MA
Albany, NY
Tallahassee, FL
Santa Fe, NM
Nashville, TN
Trenton, NJ
Jefferson, MO
Richmond, VA
Pierre, SD
Harrisburg, PA
Augusta, ME
Providence, RI
Dover, DE
Concord, NH
Montpelier, VT
Hartford, CT
Topeka, KS
Saint Paul, MN
Juneau, AK
Lincoln, NE
Raleigh, NC
Madison, WI
Olympia, WA
Phoenix, AZ
Lansing, MI
Honolulu, HI
Jackson, MS
Springfield, IL
Columbia, SC
Annapolis, MD
Cheyenne, WY
Salt Lake City, UT
Atlanta, GA
Bismarck, ND
Frankfort, KY
Salem, OR
Little Rock, AR
Des Moines, IA
Sacramento, CA
Oklahoma City, OK
Charleston, WV
Carson City, NV
(h / t à Animaniacs pour la liste des capitales)
Prenez un bonus de 20% si votre demande n'a pas explicitement les numéros 65
par 90
ou le numéro 1
dans le code. La génération de ces numéros (par exemple, a=5*13
ou a="123"[0]
ou a=64;a++
ou similaires) est autorisée dans le cadre de ce bonus, ce qui est explicitement le cas (par exemple, a=65
ou a="1 23 456"[0]
).
Classement
var QUESTION_ID=60650,OVERRIDE_USER=42963;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 commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+(?:[.]\d+)?)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
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>
alert(...)
est traditionnellement l'équivalent JS de STDOUT.Réponses:
R,
96 octets98 octets -20% -> 78,4Merci à @plasticinsect pour le bonus!
Code précédent à 96 octets:
À partir du package
maps
, il charge un ensemble de données des villes américaines. La colonnecapital
contient un2
s'il s'agit d'une capitale d'État. Les noms des villes sont donnésname
dans la colonne sous la forme "City StateAbbreviation" (c'est-à-direAlbany NY
), il faut donc ajouter un délimiteur explicite entre les deux avant la sortie.Pour ce faire, j'utilise finalement l'expression régulière,Pour éviter d'utiliser\1
ce qui signifie que je ne peux pas avoir le bonus, je suppose.\1
dans l'expression régulière, j'ai ajouté un groupe vide afin de pouvoir l'utiliser\2
.Usage:
la source
\n
pour 1 octet,>0
au lieu de `` == 2` et aussi je ne pense pas que vous en ayez besoindata(us.cities)
, sur ma machine, il se charge lorsque vous chargez le pacakage. Essaye le!Mathematica,
168153149 octets - 20% = 119,2 octetsObligatoire, mais je ne savais pas qu'un caractère pouvait être remplacé par
\.xx
ou\:xxxx
avec le code hexadécimal approprié.Edit: Coupez de 4 caractères supplémentaires en les remplaçant
Thread
par une fonction pure.Sortie:
la source
EntityValue[EntityList[EntityClass["AdministrativeDivision", "AllUSStatesPlusDC"]], {"CapitalName","StateAbbreviation"}]
AllUSStatesPlusDC
je le crains!CJam, 312 octets
Le code fait 390 octets de long et donne droit au bonus de 20% .
Notez que le code est criblé de caractères non imprimables. Essayez-le en ligne dans l' interpréteur CJam .
Idée
Nous devons coder la sortie d'une manière ou d'une autre sans utiliser de lettres majuscules ou les chiffres 1 et 65 à 90 n'importe où dans le code.
Nous commençons par réécrire la sortie souhaitée comme
En soustrayant le caractère
`
de tous les caractères de cette chaîne, nous obtenons un tableau contenant des entiers de 0 à 26. Nous pouvons convertir ce tableau de la base 27 à la base 229, produisant un tableau d'entiers de 0 à 228.Si nous ajoutons 91 à chaque chiffre de base 229 et prenons les résultats modulo 256, nous mappons la plage [0,…, 164] à [91,… 255] , et la plage [165,…, 228] à [0, …, 63] . Cela laisse les caractères avec des points de code de 64 (
@
) à 90 (Z
) inutilisés.La chaîne à coder n'est pas dans le même ordre que l'exemple de sortie dans la question. J'ai essayé plusieurs permutations jusqu'à ce que j'en trouve une qui ne contienne aucun octet nul, saut de ligne, retour chariot ou espace insécable (problématique avec l'interpréteur en ligne), et pas de guillemets doubles (nécessite un échappement).
Code
la source
Perl, 605 octets - 20% = 484
Ma première version n'était pas valide car elle utilisait \ U pour se convertir en majuscules. Celui-ci utilise \ u sur chaque lettre de l'abréviation d'état. J'ai également dû ajouter un groupe de capture factice pour éviter d'utiliser $ 1.
Edit: j'ai pu raser 8 octets en utilisant uc () avec le drapeau e. (Merci Dom Hastings.)
la source
javascript,
727687 octets - 20% = 549,6javascript est également particulièrement difficile, compte tenu de leurs longs noms de fonction et de leur camelcase. la division des États a permis d'économiser une tonne de délimiteurs et de faciliter le travail avec tout autour.
@ mbomb007 rien dans le poste n'est capitalisé pour une raison;)
la source
C,
703700octets - 20% = 560 octetsJ'ai un peu changé la boucle pour la faire compiler avec des compilateurs non C99. Version en ligne
la source
javascript (es6) 516 (645-20%)
532 (664-20%)testez l'extrait ci-dessous dans n'importe quel navigateur récent: la seule fonctionnalité es6 utilisée est
template strings
la source
Funciton , 5045-20 % = 4036 octets
Ce code ne contient qu'un seul nombre, et il n'est pas compris entre 65 et 90. Ce n'est pas non plus le nombre 1. En fait, ce nombre est composé de 4187 chiffres décimaux, qui se décomposent proprement en nombres premiers 79 × 53.
Comme toujours, obtenez un meilleur rendu en exécutant
$('pre').css('line-height',1);
dans la console de votre navigateur.Edit: Kiri-ban! Cette réponse est codegolf.SE post # 61000!
la source
code machine x86, 764 octets
612 si le bonus est attribué
Programme totalement autonome. S'appuie uniquement sur (a) Bios int 0x10 étant disponible pour imprimer chaque caractère et (b) DS, ES, SP et SS en cours d'initialisation avant l'appel du programme, DOS le fait (et DOS-Box aussi) Sinon, le code s'appuie sur rien. Le minimum absolu sans aucune dépendance, à l'exception de la ROM du BIOS, serait d'environ 2 secteurs de disquette @ 512 octets chacun.
Il ne semble exploiter aucun des trous de boucle standard, bien que certains octets du programme soient 01, ce ne sont pas des nombres dans la source. Cependant, comme je voudrais soumettre le code binaire comme solution, j'imagine que cela interdirait les 01 octets.?
Vue de l'éditeur hexadécimal du binaire:
Version 'sans golf' (source - 3126 octets)
Sortie:
la source
Python 3,
1416793785779771755734 caractères - 20% = 587,2Pas d'intelligence algorithmique ici, j'ai juste pris la sortie requise, triée (cela permet à zlib de faire un meilleur travail), compressée (en utilisant
zopfli --deflate
), encodée en base64 le résultat, puis changé l'encodage pour éviter les lettres majuscules.Non-golfé:
Il y a probablement plus à tirer de cela, surtout si vous pouvez exprimer l'argument de
translate()
manière plus compacte. Notez que la ponctuation est soigneusement choisie pour éviter la propre ponctuation de base64 (+ / =) et tout ce qui nécessiterait un backwhacking dans un littéral de chaîne.Fait amusant: les modules bz2 et lzma font tous deux moins bien sur cette entrée que zlib:
la source
import zlib,base6
au début et faireDATA.translate(tr).decode('base64').decode('zlib').decode('utf-8')
Pourquoi en avez-vous besoindecode('utf-8')
?.translate
fonctionne différemment et{ x:y for x,y in ... }
n'est pas disponible. Sans le.decode('u8')
, en Python 3, la sortie est la repr () de la chaîne d'octets, qui est suffisamment éloignée de la sortie demandée pour que je ne pense pas qu'elle devrait compter.Pyth, (631 -20%) = 504,8
Sortie:
Le deuxième paramètre pour
r
alterne entre 5 (capwords()
) et 1 (upper()
)la source
k
PowerShell,
1038976925904813768758749745 -20% = 596Non golfé:
la source
Minkolang 0,7 ,
660705708 * 0,8 = 566,4Merci à Sp3000 de m'avoir rappelé que je peux utiliser
p
pour mettre des Os majuscules dans le code!Explication
Le bit de la première ligne avant le
"
ne fait que mettre uneR
(pile de rotation) à la place der
puis remplacer toutes les instances deo
avecO
sur la deuxième ligne.Après cela, c'est la liste des capitales sans retour à la ligne et toutes les lettres en minuscules, qui est poussée sur la pile dans l'ordre inverse par Minkolang. Il y a un
01w
à la fin qui est un "trou de ver" au début de la deuxième ligne. Toutes les lettres majuscules sont produites en soustrayant 32 de la lettre minuscule, c'est pourquoi48*-
apparaît quatre fois.48*-O
sortiesB
, puis(
commence une boucle while. Le haut de la pile est vérifié,
. Si ce n'est pas le cas,
, ilO)
sort le personnage et revient au début de la boucle. Si le haut de la pile est,
, alors le compteur de programme saute àO)
cause d'2&
un trampoline conditionnel qui saute de deux espaces.Maintenant, je saute quand je rencontre un
,
car je sais que les six personnages suivants le sont, AB\nC
, ce que fait le reste de la boucle. Il y a un contrôle pour voir si la pile est vide au milieu (aprèsAB
est imprimé, avant\nC
):d?
. Si c'est le cas, le trampoline conditionnel n'est pas pris et le programme se termine en touchant le.
. Sinon, il est ignoré et la boucle continue.la source
PHP 520 octets (650 octets - 20%)
Résultat
Non golfé:
J'ai essayé différentes façons de compresser la chaîne, mais au final, toutes les solutions étaient plus longues que cette approche directe.
la source
Python 2, 658 octets * 0,8 = 526,4
Imprime le résultat sous la forme d'une liste Python de tuples Python. Ils sont également inclus entre guillemets. Cela donne certainement droit au bonus, car le seul chiffre du code est 2.
Sortie:
J'espère que cela se situe dans les limites acceptables du formatage.
la source
Groovy,
724681- 20% = 545 octetsInspiré par le savant mélange d'Edc65 avec le nom de l'État et de la ville!
la source
PowerShell, 627-20% = 502 octets
Quel est ce schéma:
Mettez en majuscule la lettre simple après une limite de mot, ou les lettres doubles avant les deux points. Le
"$args,"[3]
sélectionne la virgule dans le cas d'un code d'état à deux lettres, ou sur-sélectionne et retourne null, et ajoute les séparateurs d'état, économisant ~ 50 dans les séparateurs de la ligne de code.la source
Rubis, (925 * 80%) = 740 octets
Oof, celui-ci était dur. Il s'agit d'une chaîne compressée Zlib en octets codés hexadécimaux, qui est ensuite décompressée, transformée en un tableau de chaînes par l'expression rationnelle de numérisation, puis chaque chaîne est convertie en un nombre décimal, puis en un caractère, et enfin ce tableau est joint en un chaîne. Je pourrais poster une meilleure version plus tard qui utilise un encodage base64 modifié.
Bien que la chaîne encodée puisse avoir quelques instances de 65-90 ou 1, je ne les compte pas car la chaîne est un nombre énorme en hexadécimal. Ainsi, cela donne droit au bonus de 20%.
la source
Python 2, 639 octets - 20% = 511,2
La version ci-dessous (675 octets) contient
''.join([w.capitalize()for w in t[n][2:].split()])
, que je viens de découvrir peut être remplacée par.title()
, et est une fonction anonyme. Dans les deux réponses, les abréviations des États sont jointes aux majuscules.la source
code machine x86 - 585 octets, 468 avec bonus
Déçu de la taille de ma dernière entrée, j'ai décidé d'essayer quelque chose de très différent cette fois. Se basant sur
insertusernamehere
me l'idée de séparer les noms de villes des noms d'État, évitant ainsi une logique inutile et des terminateurs inutiles, je pensais toujours que je devrais être en mesure de rendre le programme plus petit que les chaînes brutes. UPX ne m'aiderait pas à tricher, se plaignant que le programme était déjà trop petit. En pensant à la compression, j'ai essayé de compresser la sortie de texte de 662 octets avec WinRar mais je n'ai toujours obtenu que 543 octets - et c'était sans rien pour le décompresser. Il semblait encore beaucoup trop grand, étant donné que c'était juste le résultat, sans aucun code.Puis j'ai réalisé - j'utilise seulement 26 caractères pour les lettres et 2 autres pour les espaces et les virgules. Hmm, qui tient dans 32, qui n'a besoin que de 5 bits. J'ai donc écrit un programme javascript rapide pour encoder les chaînes, en affectant az à 0-25 et l'espace et la virgule à 26 et 27. Pour garder les choses simples, chaque caractère est encodé en 5 bits, qu'il en ait besoin ou non. De là, j'ai juste collé tous les morceaux ensemble et les ai cassés en morceaux de taille octet. Cela m'a permis de regrouper les 563 octets de chaînes en 353 octets - une économie de 37,5% ou quelque 210 octets. Je n'ai pas tout à fait réussi à compresser le programme et les données dans le même espace que les données décompressées, mais je me suis approché assez pour être heureux.
Vue Hxd du binaire:
Code source:
la source