Whoa, whoa, whoa ... pare de digitar seu programa. Não, não quero dizer "imprimir ABC...
". Estou falando das capitais dos Estados Unidos.
Especificamente, imprima todas as combinações de cidades / estados fornecidas na lista a seguir
- em qualquer ordem
- com sua escolha de delimitadores (por exemplo,
Baton Rouge`LA_Indianapolis`IN_...
é aceitável), desde que não sejam ambíguas quais palavras são cidades, quais são estados e quais são entradas diferentes
- sem usar nenhum
ABCDEFGHIJKLMNOPQRSTUVWXYZ
código no código fonte
A saída deve ser STDOUT ou equivalente.
EDIT - Opa!
<edit>
Enquanto escrevia a lista de memória (graças aos Animaniacs, como descrito abaixo), aparentemente negligenciei Washington, DC, que não é uma capital do estado, mas está na música e às vezes é incluída em "listas de capitais" ( como a resposta do Mathematica abaixo). Eu pretendia incluir essa cidade nessa lista, mas perdi de alguma forma. Como resultado, respostas que não têm essa cidade não será penalizado, e respostas que não têm essa cidade não será penalizado, qualquer um. Basicamente, cabe a você se você Washington, DC
está incluído ou não na sua saída. Desculpe por isso, pessoal!
</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 para Animaniacs para a lista de capitais)
Receba um bônus de -20% se o seu envio não tiver explicitamente os números 65
passados 90
ou o número 1
no código. A geração desses números (por exemplo, a=5*13
ou a="123"[0]
ou a=64;a++
ou similares) é permitida sob esse bônus, explicitamente tê-los (por exemplo, a=65
ou a="1 23 456"[0]
) não é.
Entre os melhores
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(...)
é tradicionalmente o equivalente em JS ao STDOUT.Respostas:
R,
96 bytes98 bytes -20% -> 78,4Obrigado a @plasticinsect pelo bônus!
Código anterior em 96 bytes:
Do pacote
maps
, ele carrega um conjunto de dados de cidades dos EUA. A colunacapital
contém um2
se for uma capital do estado. Os nomes das cidades são fornecidosname
na coluna "abreviação do estado da cidade" (ou sejaAlbany NY
), portanto, é necessário adicionar um delimitador explícito antes da saída.Para fazer isso, eventualmente uso o regex,Para evitar o uso\1
o que significa que não posso ter o bônus que suponho.\1
no regex, adicionei um grupo vazio para que eu possa usar\2
.Uso:
fonte
\n
1 byte, em>0
vez de `` == 2` e também não acho que você precisedata(us.cities)
, na minha máquina ela carrega quando você carrega o pacakage. Experimente!Mathematica,
168153149 bytes - 20% = 119,2 bytesObrigatório, mas eu não sabia que qualquer caractere pode ser substituído por
\.xx
ou\:xxxx
com o código hexadecimal apropriado.Editar: Corte mais 4 caracteres, substituindo
Thread
por uma função pura.Saída:
fonte
EntityValue[EntityList[EntityClass["AdministrativeDivision", "AllUSStatesPlusDC"]], {"CapitalName","StateAbbreviation"}]
AllUSStatesPlusDC
eu tenho medo!CJam, 312 bytes
O código tem 390 bytes e se qualifica para o bônus de 20% .
Observe que o código está cheio de caracteres não imprimíveis. Experimente on-line no intérprete CJam .
Idéia
Temos que codificar a saída de alguma forma sem usar letras maiúsculas ou os números 1 e 65 a 90 em qualquer lugar do código.
Começamos reescrevendo a saída desejada como
Subtraindo o caractere
`
de todos os caracteres dessa sequência, obtemos uma matriz contendo números inteiros de 0 a 26. Podemos converter essa matriz da base 27 para a base 229, produzindo uma matriz de números inteiros de 0 a 228.Se adicionarmos 91 a cada dígito da base 229 e usarmos o módulo 256 dos resultados, mapearemos o intervalo [0,…, 164] a [91,… 255] e o intervalo [165,…, 228] a [0, 63] . Isso deixa os caracteres com pontos de código de 64 (
@
) a 90 (Z
) sem uso.A sequência a codificar não está na mesma ordem que a saída de amostra na pergunta. Tentei várias permutações até encontrar uma que não contenha bytes nulos, alimentações de linha, retornos de carro ou espaços sem interrupção (problemático com o intérprete on-line) e sem aspas duplas (requer escape).
Código
fonte
Perl, 605 bytes - 20% = 484
Minha primeira versão era inválida porque usava \ U para converter em maiúsculas. Este usa \ u em cada letra da abreviação de estado. Eu também tive que adicionar um grupo de captura fictícia para evitar o uso de $ 1.
Edit: Consegui cortar 8 bytes usando uc () com o sinalizador e. (Obrigado, Dom Hastings.)
fonte
javascript,
727687 bytes - 20% = 549,6O javascript também é particularmente difícil, considerando seus nomes de funções longos e camelcase. dividir os estados economizou muito em delimitadores e facilitou o trabalho com todos os lados.
@ mbomb007 nada no post está em maiúscula por um motivo;)
fonte
C,
703700 bytes - 20% = 560 bytesMudei um pouco o loop para compilar com compiladores não C99. Versão online
fonte
javascript (es6) 516 (645-20%)
532 (664-20%)teste executando o snippet abaixo em qualquer navegador recente: o único recurso es6 usado é
template strings
fonte
Função , 5045 - 20% = 4036 bytes
Esse código contém apenas um número e não está no intervalo de 65 a 90. Nem é o número 1. Na verdade, esse número tem 4187 dígitos decimais, que fatoriza de maneira limpa os números primos 79 × 53.
Como sempre, obtenha uma melhor renderização executando
$('pre').css('line-height',1);
no console do navegador.Edit: Kiri-ban! Esta resposta é codegolf.SE post # 61000!
fonte
código de máquina x86, 764 bytes
612 se o bônus for concedido
Programa totalmente independente. Confia apenas em que (a) Bios int 0x10 esteja disponível para imprimir cada caractere e (b) DS, ES, SP e SS sejam inicializados antes do programa ser chamado, o DOS faz isso. (E o DOS-Box também) Caso contrário, o código depende de nada. O mínimo absoluto, sem nenhuma dependência, exceto a ROM do BIOS, seria de cerca de 2 setores de disquete com 512 bytes cada.
Parece não explorar nenhum dos buracos de loop padrão, embora enquanto alguns bytes do programa sejam 01, esses não sejam números na fonte. No entanto, como eu gostaria de enviar o código binário como minha solução, imagino que isso não permitiria os 01 bytes.
Visualização do editor hexadecimal do binário:
Versão 'sem golfe' (fonte - 3126 bytes)
Saída:
fonte
Python 3,
1416793785779771755734 caracteres - 20% = 587,2Nenhuma inteligência algorítmica aqui, apenas peguei a saída necessária, classifiquei (isso permite que o zlib faça um trabalho melhor), compactuei (usando
zopfli --deflate
), codifiquei o resultado com base64 e alterei a codificação para evitar letras maiúsculas.Sem golfe:
Provavelmente há mais a ser extraído disso, especialmente se você puder expressar o argumento de maneira
translate()
mais compacta. Observe que a pontuação é cuidadosamente escolhida para evitar a pontuação da própria base64 (+ / =) e qualquer coisa que precise ser revertida em uma string literal.Curiosidade: os módulos bz2 e lzma se saem pior nessa entrada que o zlib:
fonte
import zlib,base6
no início e fazerDATA.translate(tr).decode('base64').decode('zlib').decode('utf-8')
Por que você precisa dissodecode('utf-8')
?.translate
funciona de maneira diferente e{ x:y for x,y in ... }
não está disponível. Sem o.decode('u8')
, no Python 3, a saída é o repr () da cadeia de bytes, que está longe o suficiente da saída solicitada que eu achava que não deveria contar.Pitão, (631 -20%) = 504,8
Saída:
O segundo parâmetro para
r
alterna entre 5 (capwords()
) e 1 (upper()
)fonte
k
PowerShell,
1038976925904813768758749745 -20% = 596Ungolfed:
fonte
Minkolang 0,7 ,
660705708 * 0,8 = 566,4Agradeço ao Sp3000 por me lembrar que eu posso usar
p
para colocar os maiúsculos no código!Explicação
O bit da primeira linha anterior a
"
não faz nada além de colocar umaR
(pilha de rotação) no lugar der
e substituir todas as instâncias deo
porO
na segunda linha.Depois disso, é a lista de maiúsculas sem novas linhas e todas as letras minúsculas, que é empurrada para a pilha na ordem inversa por Minkolang. Existe um
01w
no final que é um "buraco de minhoca" no início da segunda linha. Todas as letras maiúsculas são produzidas subtraindo 32 da letra minúscula, e é por isso que48*-
aparece quatro vezes.48*-O
saídasB
, em seguida,(
inicia um loop while. O topo da pilha é verificado,
. Caso contrário,
,O)
gera o caractere e volta ao início do loop. Se a parte superior da pilha estiver,
, o contador de programas pulará porO)
causa de2&
um trampolim condicional que pula dois espaços.Agora, pulo quando encontro um
,
porque sei que os próximos seis personagens são, AB\nC
, e é o que o resto do loop faz. Há uma verificação para ver se a pilha está vazia no meio (depoisAB
é impresso, antes\nC
):d?
. Se for, o trampolim condicional não será utilizado e o programa será encerrado ao pressionar o.
. Caso contrário, é ignorado e o loop continua.fonte
PHP 520 bytes (650 bytes - 20%)
Resultado
Ungolfed:
Tentei várias maneiras de compactar a string, mas no final todas as soluções foram mais longas do que essa abordagem direta.
fonte
Python 2, 658 bytes * 0,8 = 526,4
Imprime o resultado como uma lista Python de tuplas Python. Eles também estão entre aspas. Definitivamente, isso se qualifica para o bônus, já que o único número no código é 2.
Saída:
Espero que isso esteja dentro dos limites aceitáveis de formatação.
fonte
Groovy,
724681 - 20% = 545 bytesInspirado pela mistura inteligente de Edc65 do nome do estado e da cidade!
fonte
PowerShell, 627 -20% = 502 bytes
Qual é esse padrão:
Maiúscula a letra única após o limite de uma palavra ou as letras duplas antes de dois pontos. Ele
"$args,"[3]
seleciona a vírgula no caso de um código de estado com duas letras ou seleciona em excesso e retorna nulo e adiciona os separadores de estado, economizando ~ 50 nos separadores da linha de código.fonte
Ruby, (925 * 80%) = 740 bytes
Oof, este foi difícil. Essa é uma sequência compactada Zlib em bytes codificados em hexadecimal, que é então descompactada, transformada em uma matriz de sequências pelo regex de varredura, depois cada sequência é convertida em um número decimal, depois em um caractere e, finalmente, essa matriz é unida a um corda. Posso postar uma versão melhor posteriormente que use uma codificação base64 modificada.
Embora a cadeia codificada possa ter algumas instâncias de 65 a 90 ou 1, não as conto porque a cadeia é um número enorme em hexadecimal. Assim, isso se qualifica para o bônus de 20%.
fonte
Python 2, 639 bytes - 20% = 511,2
A versão abaixo (675 bytes) contém
''.join([w.capitalize()for w in t[n][2:].split()])
, que acabei de descobrir que pode ser substituída por.title()
, e é uma função anônima. Nas duas respostas, as abreviações do estado são anexadas às capitais.fonte
código de máquina x86 - 585 bytes, 468 com bônus
Desapontado com o tamanho da minha última entrada, decidi tentar algo muito diferente desta vez. Com base na
insertusernamehere
idéia de separar os nomes das cidades dos nomes dos estados, evitando lógica desnecessária e terminadores desnecessários, eu ainda achava que seria capaz de tornar o programa menor do que as seqüências brutas. O UPX não me ajudaria a trapacear, reclamando que o programa já era pequeno demais. Pensando em compactação, tentei compactar a saída de texto de 662 bytes com o WinRar, mas ainda tinha apenas 543 bytes - e isso não precisava ser descomprimido. Ainda parecia muito grande, dado que era apenas o resultado, sem nenhum código.Então percebi - estou usando apenas 26 caracteres para as letras e outros 2 para os espaços e as vírgulas. Hmm, isso se encaixa em 32, que precisa de apenas 5 bits. Então, eu escrevi um programa javascript rápido para codificar as strings, atribuindo az a 0-25 e o espaço e a vírgula têm 26 e 27. Para manter as coisas simples, todo caractere é codificado em 5 bits, se é necessário ou não. A partir daí, juntei todos os bits e os parti novamente em pedaços do tamanho de bytes. Isso me permitiu compactar os 563 bytes de strings em 353 bytes - uma economia de 37,5% ou cerca de 210 bytes. Não consegui espremer o programa e os dados no mesmo espaço que apenas os dados descompactados, mas cheguei perto o suficiente para ser feliz.
Visualização em HD do binário:
Código fonte:
fonte