<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><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="language-list"> <h2>Shortest Solution 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> <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> <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><script>var QUESTION_ID = document.referrer.split("/")[4]; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 0; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "//api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "//api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(42), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>
1
dan9
!!@#$%^&*()
; sesuatu yang harus kembali*
.Jawaban:
Matlab, 121 byte
Matlab tidak dibuat untuk string = (
sumber
disp
pernyataan?Mathematica,
174168163 byteLakukan langkah pertama, lalu hitung root digital.
sumber
Ruby,
9774 karakterContoh dijalankan:
sumber
Perl,
91 89 7674 byte73 +1 untuk
-p
sakelarTes
Terima kasih @manatwork karena membantu saya menyelamatkan
2 14 16 1517 karakter !!... Saya sudah memikirkan:
N % 32 + Y
dapat menggantikan( N & 31 ) + Y
!sumber
$1
sama dengan$&
. Jadi, lebih baik hapus penangkapan dan ubah nama variabel.while
Mungkin blok itu$t="*";s/\d/$t+=$&/eg;$_=$t
.-p
sakelar dalam hitungan.echo -n "$test" | perl -pe '…'
untuk melihat apa yang saya maksud.) Anda dapat menyelesaikannya dengan mengubahwhile
kondisi ke!/^[\d*]$/
. Sementara di sana, untuk mengurangi kerugian skor, Anda mungkin mengganti seluruhwhile
dengan ini:$t="*",s/\d/$t+=$&/eg,$_=$t until/^[\d*]$/
.&
memiliki prioritas lebih rendah daripada+
, sementara%
lebih tinggi, ubah&31
→%32
dan Anda dapat menghapus tanda kurung di sekitar subekspresi itu.ES6, 98 byte
Tidak Disatukan:
Versi 94-byte yang hanya berfungsi pada string pendek:
Menggunakan
match
,map
danjoin
ternyata lebih pendek daripada menggunakanreplace
dua kali:Uji di sini: https://jsbin.com/zizosayisi/edit?js,console
sumber
00 0 00
["0"]
sebagai0
jadi saya tidak bisa membedakannya.> '@'
,& 31
dan|| 9
?> '@'
hanya membedakan antara huruf dan angka.& 31
adalah cara yang bermanfaat untuk mengabaikan perbedaan antara kode karakter huruf besar dan kecil, karena juga secara langsung memetakan kode karakter ke dalam nilai 1..26.|| 9
digunakan karena% 9
mengembalikan 0 untuk kelipatan 9 tetapi berulang kali menambahkan angka mengembalikan 9 untuk kelipatan bukan nol dari 9. Dalam kode golf saya menggunakan(t + 8) % 9 + 1
sebaliknya yang datang ke hal yang sama.Gema, 161 karakter
(Ditulis hanya untuk mencoba apakah panggilan domain rekursif berfungsi.)
Contoh dijalankan:
sumber
JavaScript (ES6),
162159157 byteMasih mencoba mencari cara untuk menggunakan pengembalian implisit dalam fungsi luar.
Tidak disatukan + tidak ditambang
isNaN
fungsi (yang memberikan inputnya) untuk memeriksa apakah itu bukan angkasumber
00 0 00
,*
bukan output0
!_=>{expr;return expr}
=>_=>(expr,expr)
Haskell, 126 byte
Penggunaan:
f "Hello, world!"
->"7"
.l
adalah tabel pencarian karakter untuk daftar bilangan bulat (daftar tunggal, jika karakter ditemukan, daftar kosong jika tidak).f
lihat setiap karakter argumennya dan ratakan daftar daftar yang dikembalikan ke dalam daftar sederhana bilangan bulat dan panggilang
untuk memeriksa kondisi akhir (daftar kosong (->*
) atau bilangan bulat tunggal) atau untuk memanggilf
dengan jumlah daftar untuk putaran lain.sumber
MATL , 64 byte
Ini menggunakan versi bahasa saat ini (4.0.0) .
Saya punya perasaan bahwa itu bisa dibuat lebih pendek ...
Uji kasus
sumber
Serius, 50 byte
Hex Dump:
Cobalah secara Online
Dijelaskan:
sumber
Pyth, 39 byte
Cobalah secara Online
Saya hanya melakukan ini karena saya tidak bisa tidur. Mungkin aku akan menjelaskannya besok ...
sumber
Bash murni,
199194 byte(jeda baris kedua hanya untuk menghindari scrollbar)
Aturan pengujian:
sumber
JavaScript (ES6), 78
83Solusi rekursif. Menjadi rekursi ekor, variabel t dan r tidak harus lokal.
Dijelaskan
Cuplikan tes
sumber
Python, 154 byte
sumber
00 0 00
!Mathematica, 133 byte
Sedikit berbeda dari LegionMammal978 di atas. Fungsi saya mengubah semuanya menjadi kode karakter, lalu memfilter hal-hal non-alfanumerik (menggantinya dengan string kosong). Jika tidak ada alfanumerik, maka akan mengembalikan *, jika tidak maka akan mengambil root digital. Ini bisa secara signifikan (~ 15B) lebih pendek jika saya tidak harus berurusan dengan case all-nol-string. C'est la vie.
Matematika Mathematica, untuk yang belum tahu:
foo//.a_:>Tr@IntegerDigits@a
adalah penggantian berulang: mengganti angkaa
di foo dengan jumlah digit mereka, lalu menggantikan lagi sampai menyentuh titik tetap, yaitua
berhenti mengubah di bawah penggantian.Tes:
sumber