Whoa, whoa, whoa ... deja de escribir tu programa. No, no me refiero a "imprimir ABC...
". Estoy hablando de las capitales de los Estados Unidos.
Específicamente, imprima todas las combinaciones de ciudad / estado que figuran en la siguiente lista
- en cualquier orden
- con su elección de delimitadores (por ejemplo,
Baton Rouge`LA_Indianapolis`IN_...
es aceptable), siempre que no sea ambiguo qué palabras son ciudades, cuáles son estados y cuáles son entradas diferentes
- sin usar ninguno de
ABCDEFGHIJKLMNOPQRSTUVWXYZ
en su código fuente
La salida debe ser STDOUT o equivalente.
EDITAR - ¡Vaya!
<edit>
Mientras escribía la lista de memoria (gracias a los Animaniacs, como se describe a continuación), aparentemente descuidé Washington, DC, que no es una capital del estado, pero está en la canción, y a veces se incluye en "listas de capitales" ( como la respuesta de Mathematica a continuación). Tenía la intención de incluir esa ciudad en esta lista, pero de alguna manera me la perdí. Como resultado, las respuestas que no tienen esa ciudad no serán penalizadas, y las respuestas que sí tengan esa ciudad tampoco serán penalizadas. Esencialmente, depende de usted si Washington, DC
está incluido en su salida o no. Lo siento, amigos!
</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 a Animaniacs para la lista de mayúsculas)
Tome una bonificación del 20% si su presentación no tiene explícitamente los números 65
a través de 90
o el número 1
en el código. La generación de estos números (p. Ej., a=5*13
O a="123"[0]
o a=64;a++
similares) está permitida bajo este bono, explícitamente tenerlos (p. Ej., a=65
O a="1 23 456"[0]
) no.
Tabla de clasificación
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(...)
es tradicionalmente el equivalente JS de STDOUT.Respuestas:
R,
96 bytes98 bytes -20% -> 78.4¡Gracias a @plasticinsect por el bono!
Código anterior a 96 bytes:
Desde el paquete
maps
, carga un conjunto de datos de ciudades de EE. UU. La columnacapital
contiene un2
si es una capital del estado. Los nombres de las ciudades se dan en una columnaname
en la forma "Ciudad Estado Abreviatura" (es decirAlbany NY
), por lo que es necesario agregar un delimitador explícito antes de la salida.Para hacerlo, eventualmente uso la expresión regular,Para evitar usar\1
lo que significa que no puedo tener la bonificación, supongo.\1
en la expresión regular, agregué un grupo vacío para que pueda usar\2
.Uso:
fuente
\n
por 1 byte, en>0
lugar de `` == 2` y tampoco creo que lo necesitedata(us.cities)
, en mi máquina se carga cuando carga el paquete. ¡Pruébalo!Mathematica,
168153149 bytes - 20% = 119,2 bytesObligatorio, pero no sabía que cualquier personaje puede ser reemplazado por
\.xx
o\:xxxx
con el código hexadecimal apropiado.Editar: Corte de 4 caracteres más reemplazando
Thread
con una función pura.Salida:
fuente
EntityValue[EntityList[EntityClass["AdministrativeDivision", "AllUSStatesPlusDC"]], {"CapitalName","StateAbbreviation"}]
AllUSStatesPlusDC
miedo!CJam, 312 bytes
El código tiene una longitud de 390 bytes y califica para la bonificación del 20% .
Tenga en cuenta que el código está plagado de caracteres no imprimibles. Pruébelo en línea en el intérprete de CJam .
Idea
Tenemos que codificar la salida de alguna manera sin usar letras mayúsculas o los números 1 y 65 a 90 en cualquier parte del código.
Comenzamos reescribiendo la salida deseada como
Al restar el carácter
`
de todos los caracteres de esa cadena, obtenemos una matriz que contiene enteros de 0 a 26. Podemos convertir esta matriz de la base 27 a la base 229, produciendo una matriz de enteros de 0 a 228.Si agregamos 91 a cada dígito base-229 y tomamos los resultados del módulo 256, asignamos el rango [0, ..., 164] a [91, ... 255] , y el rango [165, ..., 228] a [0, ... 63] . Esto deja los caracteres con puntos de código de 64 (
@
) a 90 (Z
) sin usar.La cadena a codificar no está en el mismo orden que la salida de muestra en la pregunta. Intenté varias permutaciones hasta que encontré una que no contiene bytes nulos, avances de línea, retornos de carro o espacios sin interrupción (problemático con el intérprete en línea), y sin comillas dobles (requiere escape).
Código
fuente
Perl, 605 bytes - 20% = 484
Mi primera versión no era válida porque usaba \ U para convertir a mayúsculas. Éste usa \ u en cada letra de la abreviatura del estado. También tuve que agregar un grupo de captura ficticio para evitar usar $ 1.
Editar: pude eliminar 8 bytes usando uc () con la bandera e. (Gracias Dom Hastings).
fuente
javascript,
727687 bytes - 20% = 549,6JavaScript también es particularmente difícil, teniendo en cuenta sus nombres largos de funciones y camelcase. dividir los estados ahorró una tonelada en delimitadores, y facilitó el trabajo con todos.
@ mbomb007 nada en la publicación en mayúscula por una razón;)
fuente
C,
703700 bytes - 20% = 560 bytesCambié un poco el bucle para que se compile con compiladores que no sean C99. Versión en línea
fuente
javascript (es6) 516 (645-20%)
532 (664-20%)prueba ejecutando el fragmento a continuación en cualquier navegador reciente: la única característica es6 utilizada es
template strings
fuente
Funciton , 5045 - 20% = 4036 bytes
Este código contiene solo un número, y no está en el rango de 65 a 90. Tampoco es el número 1. De hecho, este número tiene 4187 dígitos decimales, que se descompone en primos 79 × 53.
Como siempre, obtenga un mejor renderizado ejecutando
$('pre').css('line-height',1);
en la consola de su navegador.Editar: Kiri-ban! ¡Esta respuesta es codegolf.SE post # 61000!
fuente
código de máquina x86, 764 bytes
612 si se otorga bonificación
Programa totalmente autónomo. Solo se basa en que (a) Bios int 0x10 esté disponible para imprimir cada carácter y (b) que DS, ES, SP y SS se inicialicen antes de que se llame al programa, DOS hace esto (y DOS-Box también) De lo contrario, el código se basa en nada. El mínimo absoluto sin ninguna dependencia, excepto la ROM del BIOS, sería de aproximadamente 2 sectores de disquete a 512 bytes cada uno.
No parece explotar ninguno de los agujeros de bucle estándar, aunque algunos bytes del programa son 01, estos no son números en la fuente. Sin embargo, dado que me gustaría enviar el código binario como mi solución, imagino que eso no permitiría los 01 bytes.
Vista del editor hexadecimal de binario:
Versión 'sin golf' (fuente - 3126 bytes)
Salida:
fuente
Python 3,
1416793785779771755734 caracteres - 20% = 587.2No hay inteligencia algorítmica aquí, simplemente tomé el resultado requerido, lo ordené (esto permite que zlib haga un mejor trabajo), lo comprimí (usando
zopfli --deflate
), codifiqué el resultado con base64 y luego cambié la codificación para evitar letras mayúsculas.Sin golf:
Probablemente haya más que exprimir de esto, especialmente si puede expresar el argumento de
translate()
manera más compacta. Tenga en cuenta que la puntuación allí se elige cuidadosamente para evitar la propia puntuación de base64 (+ / =) y cualquier cosa que necesite retroceso en un literal de cadena.Dato curioso: los módulos bz2 y lzma funcionan peor en esta entrada que zlib:
fuente
import zlib,base6
al principio y hacerDATA.translate(tr).decode('base64').decode('zlib').decode('utf-8')
¿Por qué lo necesitadecode('utf-8')
?.translate
funciona de manera diferente y{ x:y for x,y in ... }
no está disponible. Sin el.decode('u8')
, en Python 3, la salida es el repr () de la cadena de bytes, que está lo suficientemente lejos de la salida solicitada que no pensé que debería contar.Pyth, (631-20%) = 504.8
Salida:
El segundo parámetro para
r
alterna entre 5 (capwords()
) y 1 (upper()
)fuente
k
PowerShell,
1038976925904813768758749745 -20% = 596Sin golf:
fuente
Minkolang 0.7 ,
660705708 * 0.8 = 566.4¡Gracias a Sp3000 por recordarme que puedo usar
p
para poner O mayúscula en el código!Explicación
El bit de la primera línea antes de la
"
hace nada más que poner unR
(girar la pila) en lugar der
y luego reemplazar todas las instancias deo
conO
en la segunda línea.Después de eso, es la lista de mayúsculas sin líneas nuevas y todas las letras en minúsculas, que Minkolang empuja a la pila en orden inverso. Hay una
01w
en el extremo que es un "agujero de gusano" al principio de la segunda línea. Todas las letras mayúsculas se obtienen restando 32 de la letra minúscula, por lo que48*-
aparece cuatro veces.48*-O
salidasB
, luego(
comienza un ciclo while. Se comprueba la parte superior de la pila,
. Si no es así,
,O)
genera el carácter y vuelve al comienzo del bucle. Si la parte superior de la pila es,
, entonces el contador del programa saltaO)
debido a2&
un trampolín condicional que salta dos espacios.Ahora, salto cuando me encuentro con un
,
porque sé que los siguientes seis caracteres son, AB\nC
, que es lo que hace el resto del ciclo. Hay una comprobación para ver si la pila está vacía en el medio (después deAB
que se imprime, antes\nC
):d?
. Si es así, entonces el trampolín condicional no se toma y el programa se cierra al tocar el.
. De lo contrario, se omite y el bucle continúa.fuente
PHP 520 bytes (650 bytes - 20%)
Resultado
Sin golf:
Intenté varias formas de comprimir la cadena, pero al final todas las soluciones fueron más largas que este enfoque directo.
fuente
Python 2, 658 bytes * 0.8 = 526.4
Imprime el resultado como una lista Python de tuplas de Python. También se incluyen entre comillas. Esto definitivamente califica para la bonificación ya que el único número en el código es 2.
Salida:
Espero que esto esté dentro de los límites aceptables de formateo.
fuente
Groovy,
724681- 20% = 545 bytes¡Inspirado por la inteligente combinación de Edc65 del nombre del estado y la ciudad!
fuente
PowerShell, 627-20% = 502 bytes
¿Cuál es este patrón?
En mayúscula la letra simple después del límite de una palabra, o las letras dobles antes de los dos puntos. Los
"$args,"[3]
selecciona bien la coma en el caso de un código de estado doble carta, o overselects y vuelve nulo, y añade los separadores del estado, el ahorro de ~ 50 en los separadores de la línea de código.fuente
Rubí, (925 * 80%) = 740 bytes
Oof, este fue difícil. Esta es una cadena comprimida de Zlib en bytes codificados en hexadecimal, que luego se descomprime, se convierte en una matriz de cadenas por la expresión regular de escaneo, luego cada cadena se convierte en un entero decimal, luego en un carácter, y finalmente esta matriz se une en un cuerda. Podría publicar una versión mejor más tarde que usa una codificación base64 modificada.
Aunque la cadena codificada puede tener algunas instancias de 65-90 o 1, no las cuento porque la cadena es un número enorme en hexadecimal. Por lo tanto, esto califica para la bonificación del 20%.
fuente
Python 2, 639 bytes - 20% = 511.2
La versión siguiente (675 bytes) tiene
''.join([w.capitalize()for w in t[n][2:].split()])
, que acabo de descubrir, puede ser reemplazada por.title()
, y es una función anónima. En ambas respuestas, las abreviaturas estatales están unidas a las capitales.fuente
Código de máquina x86: 585 bytes, 468 con bonificación
Decepcionado por lo grande que fue mi última entrada, esta vez decidí probar algo muy diferente. Partiendo de
insertusernamehere
la idea de separar los nombres de las ciudades de los nombres de los estados, evitando así la lógica innecesaria y los terminadores innecesarios, todavía pensé que debía poder hacer que el programa fuera más pequeño que las cadenas sin formato. UPX no me ayudó a hacer trampa, quejándose de que el programa ya era demasiado pequeño. Pensando en la compresión, intenté comprimir la salida de texto de 662 bytes con WinRar pero todavía obtuve 543 bytes, y eso fue sin nada con lo que descomprimirlo. Todavía parecía demasiado grande, dado que era solo el resultado, sin ningún código.Entonces me di cuenta: solo estoy usando 26 caracteres para las letras y otros 2 para los espacios y las comas. Hmm, eso encaja en 32, que necesita solo 5 bits. Entonces, escribí un programa javascript rápido para codificar las cadenas, asignando az a 0-25 y el espacio y la coma obtuvieron 26 y 27. Para mantener las cosas simples, cada carácter está codificado en 5 bits, ya sea que lo necesite o no. A partir de ahí, simplemente pegué todos los bits y los volví a dividir en trozos de tamaño byte. Esto me permitió empaquetar los 563 bytes de cadenas en 353 bytes, un ahorro del 37.5% o unos 210 bytes. No logré exprimir el programa y los datos en el mismo espacio que solo los datos desempaquetados, pero me acerqué lo suficiente como para ser feliz.
Vista Hxd de binario:
Código fuente:
fuente