Whoa, whoa, whoa ... berhenti mengetik program Anda. Tidak, maksud saya bukan "cetak ABC...
." Saya sedang berbicara tentang ibukota Amerika Serikat.
Secara khusus, cetak semua kombinasi kota / negara bagian yang diberikan dalam daftar berikut
- dalam urutan apa pun
- dengan pembatas pilihan Anda (misalnya,
Baton Rouge`LA_Indianapolis`IN_...
dapat diterima), asalkan tidak jelas kata mana yang kota, yang menyatakan, dan entri yang berbeda
- tanpa menggunakan salah satu dari
ABCDEFGHIJKLMNOPQRSTUVWXYZ
dalam kode sumber Anda
Outputnya harus STDOUT atau setara.
EDIT - Aduh!
<edit>
Saat mengetik daftar dari ingatan (terima kasih kepada Animaniacs, seperti yang dijelaskan di bawah), saya rupanya mengabaikan Washington, DC, yang bukan ibukota negara bagian, tetapi ada dalam lagu tersebut, dan kadang-kadang dimasukkan dalam "daftar ibukota" ( seperti jawaban Mathematica di bawah). Saya bermaksud memasukkan kota itu ke dalam daftar ini, tetapi entah bagaimana saya melewatkannya. Akibatnya, jawaban yang tidak memiliki kota yang tidak akan dikenakan sanksi, dan jawaban yang tidak memiliki kota yang tidak akan dikenakan sanksi, baik. Pada dasarnya, terserah Anda apakah Washington, DC
termasuk dalam ouput Anda atau tidak. Maaf soal itu, kawan!
</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 ke Animaniacs untuk daftar ibukota)
Ambil bonus -20% jika kiriman Anda tidak secara eksplisit memiliki angka 65
melalui 90
atau nomor 1
dalam kode. Menghasilkan angka-angka ini (misalnya, a=5*13
atau a="123"[0]
atau a=64;a++
sejenisnya) diperbolehkan di bawah bonus ini, secara eksplisit memilikinya (misalnya, a=65
atau a="1 23 456"[0]
) tidak.
Papan peringkat
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(...)
secara tradisional setara dengan STDOUT.Jawaban:
R,
96 byte98 byte -20% -> 78,4Berkat @plasticinsect untuk bonusnya!
Kode sebelumnya pada 96 byte:
Dari paket
maps
, ini memuat dataset kota-kota AS. Kolomcapital
berisi2
jika itu adalah ibukota negara bagian. Nama-nama kota yang diberikan adalah kolomname
dalam bentuk "City StateAbbreviation" (yaituAlbany NY
), jadi orang perlu menambahkan pembatas eksplisit di antara sebelum output.Untuk melakukannya saya akhirnya menggunakan regex yangUntuk menghindari penggunaan\1
berarti saya tidak bisa mendapatkan bonus.\1
di regex saya menambahkan grup kosong sehingga saya bisa menggunakan\2
.Pemakaian:
sumber
\n
untuk 1 byte,>0
alih-alih `` == 2` dan juga saya rasa Anda tidak perludata(us.cities)
, pada mesin saya itu memuat ketika Anda memuat pacakage. Cobalah!Mathematica,
168153149 byte - 20% = 119,2 byteWajib, tapi saya tidak tahu bahwa karakter apa pun dapat diganti oleh
\.xx
atau\:xxxx
dengan kode hex yang sesuai.Sunting: Potong 4 karakter lebih banyak dengan mengganti
Thread
dengan fungsi murni.Keluaran:
sumber
EntityValue[EntityList[EntityClass["AdministrativeDivision", "AllUSStatesPlusDC"]], {"CapitalName","StateAbbreviation"}]
AllUSStatesPlusDC
aku takut!CJam, 312 byte
Panjang kode 390 byte dan memenuhi syarat untuk bonus 20% .
Perhatikan bahwa kode ini penuh dengan karakter yang tidak dapat dicetak. Cobalah online di juru bahasa CJam .
Ide
Kita harus mengkodekan outputnya entah bagaimana tanpa menggunakan huruf besar atau angka 1 dan 65 hingga 90 di mana saja dalam kode.
Kami mulai dengan menulis ulang output yang diinginkan sebagai
Dengan mengurangi karakter
`
dari semua karakter string itu, kami memperoleh array yang berisi bilangan bulat dari 0 hingga 26. Kami dapat mengubah array ini dari basis 27 ke basis 229, menghasilkan array bilangan bulat dari 0 hingga 228.Jika kita menambahkan 91 ke setiap basis-229 digit dan mengambil hasil modulo 256, kami memetakan rentang [0,…, 164] hingga [91, ... 255] , dan kisaran [165,…, 228] hingga [0, …, 63] . Ini membuat karakter dengan poin kode dari 64 (
@
) ke 90 (Z
) tidak digunakan.String untuk menyandikan tidak dalam urutan yang sama dengan sampel output dalam pertanyaan. Saya mencoba beberapa permutasi sampai saya menemukan permutasi yang tidak mengandung byte nol, linefeed, carriage return, atau non-breaking space (bermasalah dengan interpreter online), dan tidak ada tanda kutip ganda (perlu melarikan diri).
Kode
sumber
Perl, 605 byte - 20% = 484
Versi pertama saya tidak valid karena menggunakan \ U untuk mengonversi menjadi huruf besar. Yang ini menggunakan \ u pada setiap huruf singkatan negara. Saya juga harus menambahkan grup penangkap boneka untuk menghindari menggunakan $ 1.
Sunting: Saya dapat mencukur 8 byte dengan menggunakan uc () dengan flag e. (Terima kasih Dom Hastings.)
sumber
javascript,
727687 byte - 20% = 549,6javascript juga sangat sulit, mengingat nama fungsi dan camelcase yang panjang. memisahkan negara-negara menghemat satu ton pembatas, dan membuatnya lebih mudah untuk bekerja dengan sekeliling.
@ mbomb007 tidak ada dalam pos yang dikapitalisasi karena suatu alasan;)
sumber
C,
703700 byte - 20% = 560 byteSaya mengubah loop sedikit untuk membuatnya kompilasi dengan kompiler non-C99. Versi online
sumber
javascript (es6) 516 (645-20%)
532 (664-20%)uji menjalankan cuplikan di bawah ini di peramban terbaru: satu-satunya fitur es6 yang digunakan adalah
template strings
sumber
Funciton , 5045 - 20% = 4036 byte
Kode ini hanya berisi satu angka, dan itu tidak berada dalam kisaran 65 hingga 90. Juga bukan angka 1. Faktanya, angka ini adalah angka desimal 4187, yang dengan bersih memfaktorkan ke dalam bilangan prima 79 × 53.
Seperti biasa, dapatkan rendering yang lebih baik dengan mengeksekusi
$('pre').css('line-height',1);
di konsol browser Anda.Sunting: Kiri-ban! Jawaban ini adalah codegolf.SE posting # 61000!
sumber
kode mesin x86, 764 byte
612 jika bonus diberikan
Program yang benar-benar mandiri. Hanya bergantung pada (a) Bios int 0x10 yang tersedia untuk mencetak masing-masing karakter dan (b) DS, ES, SP dan SS diinisialisasi sebelum program dipanggil, DOS melakukan ini. (Dan juga DOS-Box) Jika tidak, kode ini bergantung pada tidak ada. Minimum absolut tanpa ketergantungan sama sekali kecuali untuk ROM BIOS, akan sekitar 2 sektor floppy disk masing-masing @ 512 byte.
Tampaknya tidak mengeksploitasi salah satu lubang loop standar, meskipun sementara beberapa byte dari program adalah 01, ini bukan angka di sumbernya. Namun, karena saya ingin mengirimkan kode biner sebagai solusi saya, saya membayangkan itu akan melarang 01 byte.
Tampilan hex-editor biner:
Versi 'Tidak golf' (sumber - 3126 byte)
Keluaran:
sumber
Python 3,
1416793785779771755734 karakter - 20% = 587.2Tidak ada kepintaran algoritmik di sini, saya hanya mengambil output yang diperlukan, mengurutkannya (ini memungkinkan zlib melakukan pekerjaan yang lebih baik), mengompresnya (menggunakan
zopfli --deflate
), hasil encoding base64, dan kemudian mengubah pengkodean sekitar untuk menghindari huruf kapital.Tidak golf:
Mungkin ada lebih banyak yang harus diperas dari ini, terutama jika Anda dapat mengekspresikan argumen dengan
translate()
lebih kompak. Perhatikan bahwa tanda baca di sana dipilih dengan hati-hati untuk menghindari tanda baca base64 sendiri (+ / =) dan apa pun yang perlu backwhacking dalam string literal.Fakta menyenangkan: modul bz2 dan lzma keduanya lebih buruk pada input ini daripada zlib:
sumber
import zlib,base6
di awal dan melakukanDATA.translate(tr).decode('base64').decode('zlib').decode('utf-8')
Mengapa Anda membutuhkannyadecode('utf-8')
sama sekali?.translate
bekerja secara berbeda dan{ x:y for x,y in ... }
tidak tersedia. Tanpa.decode('u8')
, dalam Python 3, output adalah repr () dari byte string, yang cukup jauh dari output yang diminta sehingga saya tidak berpikir itu harus dihitung.Pyth, (631 -20%) = 504.8
Keluaran:
Parameter kedua untuk
r
bergantian antara 5 (capwords()
) dan 1 (upper()
)sumber
k
PowerShell,
1038976925904813768758749745 -20% = 596Tidak Terkumpul:
sumber
Minkolang 0.7 ,
660705708 * 0.8 = 566.4Terima kasih kepada Sp3000 untuk mengingatkan saya bahwa saya dapat menggunakan
p
untuk memasukkan modal Os dalam kode!Penjelasan
Bit dari baris pertama sebelum
"
tidak melakukan apa-apa selain meletakkanR
(rotate stack) di tempatr
dan kemudian ganti semua instanceo
denganO
pada baris kedua.Setelah itu, ini adalah daftar ibukota tanpa baris baru dan semua huruf kecil, yang didorong ke tumpukan dengan urutan terbalik oleh Minkolang. Ada
01w
di ujung yang merupakan "lubang cacing" ke awal baris kedua. Semua huruf kapital dihasilkan dengan mengurangi 32 dari huruf kecil, itulah sebabnya48*-
muncul empat kali.48*-O
outputB
, kemudian(
mulai loop sementara. Bagian atas tumpukan dicentang,
. Jika tidak,
, makaO)
output karakter dan melompat kembali ke awal perulangan. Jika bagian atas tumpukan adalah,
, maka program counter melompat lebihO)
karena2&
, trampolin bersyarat yang melompat dua ruang.Sekarang, saya melompat ketika saya menemukan a
,
karena saya tahu enam karakter berikutnya, AB\nC
, yang merupakan sisa dari loop. Ada pemeriksaan untuk melihat apakah stack kosong di tengah-tengah (setelahAB
dicetak, sebelum\nC
):d?
. Jika ya, maka trampolin kondisional tidak diambil dan program keluar setelah menekan.
. Kalau tidak, itu dilewati dan loop berlanjut.sumber
PHP 520 byte (650 byte - 20%)
Hasil
Tidak Terkumpul:
Saya mencoba berbagai cara untuk mengompresi string, tetapi pada akhirnya semua solusi lebih panjang dari pendekatan lurus ke depan ini.
sumber
Python 2, 658 byte * 0.8 = 526.4
Mencetak hasilnya sebagai daftar Python tupel Python. Mereka juga dilampirkan dalam tanda kutip. Ini pasti memenuhi syarat untuk bonus karena satu-satunya angka dalam kode adalah 2.
Keluaran:
Saya harap ini masih dalam batas format yang dapat diterima.
sumber
Groovy,
724681 - 20% = 545 byteTerinspirasi oleh kepintaran Edc65 bersama negara dan nama kota!
sumber
PowerShell, 627 -20% = 502 byte
Yang mana pola ini:
Huruf besar satu huruf setelah batas kata, atau dua huruf di depan titik dua. The
"$args,"[3]
menyeleksi baik koma dalam kasus kode huruf negara ganda, atau overselects dan kembali nol, dan menambahkan pemisah negara, tabungan ~ 50 di pemisah dari garis kode.sumber
Ruby, (925 * 80%) = 740 byte
Oof, ini sulit. Ini adalah string terkompresi Zlib dalam byte hex yang disandikan, yang kemudian didekompresi, diubah menjadi array string oleh regex pemindaian, lalu setiap string dikonversi ke bilangan bulat desimal, lalu ke karakter, dan akhirnya array ini bergabung menjadi sebuah tali. Saya mungkin memposting versi yang lebih baik nanti yang menggunakan pengkodean base64 yang dimodifikasi.
Meskipun string yang disandikan mungkin memiliki beberapa contoh 65-90 atau 1, saya tidak menghitungnya karena string adalah satu angka besar dalam heksadesimal. Jadi ini memenuhi syarat untuk bonus 20%.
sumber
Python 2, 639 byte - 20% = 511.2
Versi di bawah (675 bytes) ada
''.join([w.capitalize()for w in t[n][2:].split()])
di dalamnya, yang baru saja saya temukan dapat digantikan oleh.title()
, dan merupakan fungsi anonim. Dalam kedua jawaban, singkatan negara bagian melekat pada ibukota.sumber
kode mesin x86 - 585 byte, 468 dengan bonus
Kecewa dengan seberapa besar entri terakhir saya, saya memutuskan untuk mencoba sesuatu yang sangat berbeda kali ini. Menggambar pada
insertusernamehere
ide memisahkan nama kota dari nama negara, sehingga menghindari logika yang tidak perlu dan terminator yang tidak dibutuhkan, saya masih berpikir saya harus dapat membuat program lebih kecil daripada string mentah. UPX tidak akan membantu saya untuk menipu, mengeluh bahwa programnya sudah terlalu kecil. Berpikir tentang kompresi, saya mencoba untuk mengompresi output teks 662 byte dengan WinRar tetapi masih hanya mendapat 543 byte - dan itu tanpa apa-apa untuk mendekompresnya. Tampaknya masih terlalu besar, mengingat bahwa itu hanya hasilnya, tanpa kode apa pun.Kemudian saya menyadari - Saya hanya menggunakan 26 karakter untuk surat dan 2 karakter lainnya untuk spasi dan koma. Hmm, itu cocok menjadi 32, yang hanya membutuhkan 5 bit. Jadi, saya menulis program javascript cepat untuk mengkodekan string, menetapkan az ke 0-25 dan spasi dan koma mendapat 26 dan 27. Untuk menjaga hal-hal sederhana, setiap karakter dikodekan dalam 5 bit, apakah ini membutuhkan banyak atau tidak. Dari sana, saya hanya menempelkan semua bit dan memecahnya menjadi potongan-potongan berukuran byte. Ini memungkinkan saya untuk mengemas string 563 byte menjadi 353 byte - penghematan 37,5% atau 210 byte. Saya tidak cukup berhasil menekan program dan data ke ruang yang sama dengan hanya data yang dibongkar, tapi saya cukup dekat untuk bahagia.
Tampilan biner Hxd:
Kode sumber:
sumber