Tantangan ini didasarkan pada Downgoat's Adjust your chair .
Tantangan
Anda baru saja menyesuaikan kursi baru Anda! Ini sangat cocok untuk Anda. Namun, roda berderit dan Anda tahu orang yang memperbaiki akan mengubah penyesuaian. Masalahnya adalah, Anda tidak memiliki penggaris, jadi Anda harus menulis sebuah program untuk mengukurnya untuk Anda.
Orang-orang perbaikan hanya bisa menunggu begitu lama. Jadi, kode Anda harus sesingkat mungkin.
Contohnya
O
|
|
| _
| |
|_|_
|
|
O
5,3,2,2,1
O
| _
| |
|__|__
|
|
__|__
OOOOO
3,5,2,3,5
O
| _
|______|______
______|______
OOOOOOOOOOOOO
2,13,1,1,13
Bagian kursi
Kursi memiliki berbagai komponen:
O <- Headrest
|
| <- Backrest
| _ <- Armrest
| |
|__|__ <- Seat
|
| <- Leg
_|_
OOO <- Wheels
Deskripsi Kursi Terperinci
Bagian-bagian kursi adalah:
Headrest: Akan selalu ada satu headrest di atas sandaran
O
|
Sandaran: Jumlahnya |
adalah Tinggi Sandaran
O
|
|
Kursi: Jumlahnya _
adalah Lebar Kursi , ada |
di tengah untuk sandaran tangan.
__|__
Sandaran tangan: Jumlahnya |
adalah Tinggi Sandaran Tangan . Ini akan dimasukkan di tengah kursi.
_
|
|
Kaki: Jumlahnya |
adalah Tinggi Kaki
|
|
Roda: Roda dipusatkan di bawah kaki. Jika mereka lebih dari satu, semua kecuali roda tengah akan memiliki _
garis di atas mereka.
_ _
OOO
Keluaran
Diberi kursi, Anda akan menghasilkan berbagai variabel.
Outputnya harus dalam urutan sebagai berikut:
- Tinggi sandaran
- Lebar Kursi selalu aneh
- Tinggi Sandaran Tangan Selalu kurang dari tinggi sandaran
- Tinggi kaki
- Hitungan roda Selalu kurang dari atau sama dengan lebar kursi dan Selalu aneh
Output mungkin memiliki baris baru, atau dalam bentuk array / daftar jika itu adalah fungsi.
Papan peringkat
/* Configuration */
var QUESTION_ID = 67522; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 43394; // This should be the user ID of the challenge author.
/* App */
var answers = [],
answers_hash, answer_ids, answer_page = 1,
more_answers = true,
comment_page;
function answersUrl(index) {
return "https://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 "https://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,]*[^\s,]),.*?(\d+(?:[.]\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,
});
});
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;
if (/<a/.test(lang)) lang = jQuery(lang).text();
languages[lang] = languages[lang] || {
lang: a.language,
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 > b.lang) return 1;
if (a.lang < b.lang) 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);
}
}
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;
}
<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>
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar penalti penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir dalam tajuk:
# Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Jawaban:
Lua, 187 Bytes
Saya pikir saya mungkin bisa bermain golf lagi, tapi saya pikir ini bagus saat ini. Juga, jika output perlu dipisahkan dengan koma saya dapat memperbaikinya, tetapi ini masih memenuhi persyaratan metode.
Juga, input dimasukkan dalam satu baris sekaligus. Setelah roda dimasukkan, tekan enter dengan garis kosong untuk menyelesaikan input.
Tidak disatukan
(Posisi diukur dari atas ke bawah, sehingga 'O' atas adalah posisi 1, dan roda adalah posisi terbesar.
#c
) minus posisi kursi minus 2, untuk mengimbangi roda dan kursi.sumber
Groovy, 161 byte !!!
Yay !! Bukan yang terakhir !!
Tidak Disatukan:
Tes program tanpa kulit:
sumber
Pyth,
57545350 byteMungkin bisa bermain golf lebih lanjut. -3 byte terima kasih kepada issacg untuk trik string karakter tunggal.
Penjelasan:
sumber
\
. Jadi"_"
=\_
Perl,
93 + 2 = 9590 + 1 = 9183 + 1 = 84 byteRupanya output tidak perlu memisahkan koma
Invoke with
perl -n chair.pl chairInput
(penalti 1B untuk bendera).Tidak Disatukan:
Versi sebelumnya:
Ajak dengan
perl -0n chair.pl < chairInput
Penjelasan:
sumber
Python 3,
160158 byteKode ini berfungsi tetapi hanya pada kondisi berikut: 1)
armrest height > 0
jika tidak ada_
penghitungan istirahat dan 2)seat width > 1
jika tidak, sandaran tangan akan menghalangi lebar-satu kursi dan_
penghitungan rusak.sumber