Kita semua telah melihat tanda-tanda di motel memberi tahu kami apakah ada lowongan atau tidak:
Biasanya, surat-surat VACANCY akan menyala secara permanen , dan surat-surat TIDAK menyala jika tidak ada kamar di motel.
Tantangan
Motel rata-rata di AS memiliki 200 kamar.
Anda akan menulis sebuah program / fungsi yang mengambil T integer (untuk ruang yang diambil) sebagai satu-satunya masukan.
Program Anda kemudian akan menampilkan kata-kata NO VACANCY
. Huruf-huruf VACANCY
akan dicetak dengan warna merah.
Jika T ≥ 200, huruf-huruf NO
juga akan dicetak dengan warna merah.
Misalnya, anggap a.out
program Anda dan "input" = argumen baris perintah: (Saya salah ketik dan sistem saya mengabaikan huruf besar-kecil).
Aturan
- Program / fungsi Anda harus menampilkan (atau, jika lambda, mengembalikan ) string yang tepat
NO VACANCY
, termasuk kasing. - Program / fungsi Anda hanya dapat mengatur warna latar depan teks menjadi merah dan bukan latar belakang.
- Jika mau, Anda dapat menggunakan kode pelarian ANSI untuk mencetak warna merah -
\x1b[31m
akan berfungsi. - Program / fungsi Anda mungkin tidak mengubah warna teks shell Anda setelah selesai.
- Program / fungsi Anda harus berakhir secara normal.
- Program / fungsi Anda harus mencetak hanya ke output standar.
- Program / fungsi Anda harus menggunakan warna latar belakang default shell / terminal / IDE Anda. (Jika Anda memilih untuk memiliki output grafis, Anda dapat memilih warna apa pun yang Anda suka, kecuali merah.)
- Jika T ≤ 200, huruf-huruf
NO
harus dicetak dalam warna foreground default shell / terminal / IDE Anda. (Jika Anda memilih untuk memiliki output grafis, sekali lagi Anda dapat memilih warna apa pun yang Anda suka) - Jika karena alasan tertentu warna foreground / background shell / terminal / IDE Anda berwarna merah, Anda harus mencetak dengan latar belakang hitam dan latar depan putih standar.
- Jika Anda memilih untuk menggunakan output grafis, merah hanya dapat digunakan ketika ditentukan dalam program (misalnya warna latar belakang Anda atau warna teks standar mungkin tidak merah).
Pemenang
Seperti biasa dengan kode-golf , program terpendek menang! Brownie poin untuk output grafis.
Saya akan menerima jawaban terpendek dalam seminggu. Selamat bermain golf!
Papan peringkat
var QUESTION_ID=123146,OVERRIDE_USER=61563;function answersUrl(e){return"https://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"https://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+)(?=[^\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>
Jawaban:
Jelly ,
2926 byteIni menggunakan
<CSI>
( 0x9b ), yang lebih pendek dari<ESC>[
( 0x1b 0x5b ).Ini me-reset warna foreground dengan
<CSI>m
bukannya<CSI>0m
, karena 0 implisit.Verifikasi
Perhatikan bahwa emulator terminal Anda (misalnya, Konsole) harus disetel ke ISO 8859-1 atau serupa.
Bagaimana itu bekerja
sumber
Javascript (ES6), 60 byte
(Buka konsol peramban Anda saat menjalankan cuplikan untuk melihat hasil berwarna.)
sumber
NO%c VACANCY color:red
?console.log()
karena aturan menetapkan bahwa pengembalian baik-baik saja, Anda tidak harus mendefinisikan fungsi juga.Ruby (* terminal gaya nix),
5448454443 byte1 byte disimpan berkat Value Ink
␛
berdiri untuk byte esc literal (ASCII 27)Sebuah port jawaban python saya, yaitu
bytebeberapa byte lebih pendek. Saya baru mengenal golf ruby, tetapi ingin sekali belajar sehingga umpan balik sangat dihargai.sumber
->x{"#{x>199?"␛[31m":p}NO␛[31m VACANCY␛[m"}
menghemat satu byte. Triknya adalah kenyataan bahwa dalam interpolasi string,"#{nil}"
akan dievaluasi menjadi string kosong, danp
dapat digunakan sebagai penggantinil
.Python 3 (* terminal gaya nix),
5554 byteIni menggunakan kode pelarian ANSI.
\033[31m
Membuat terminal merah, jika x kurang dari 200 kita akan mulai dengan satu membuatNO
merah, jika tidak kita akan memiliki satu setelahNO
membuatnya merah. Ketika kita selesai\033[m
membersihkan warna dari terminal.sumber
HTML,
7271 bytesumber
Java (OpenJDK 9) ,
102898851 byteYa, jawa : P Ini hanya berfungsi pada terminal * nix.
sumber
bash, 41 byte
di mana ␛ mewakili karakter ESC literal (ASCII \ 033).
sumber
Pergi ,
8281 byteIni hanya berfungsi pada terminal * nix.
Saya bertanya-tanya betapa mudahnya untuk port ini ke Jawa ...Selesai.sumber
BASH / MKSH,
48 4746 byteCatatan: ^ [berarti karakter ESC lebar 1 byte: 0x1b atau desimal 27.
^ M berarti karakter CR lebar 1 byte: 0x0d, desimal 13.
sumber
Excel VBA,
767372 BytesFungsi jendela langsung VBE anonim yang mengambil input tipe yang diharapkan
Integer
dari sel[A1]
dan mengeluarkan tanda (TIDAK) VACANCY di seluruh selA2:B2
-3 Bytes untuk diubah
rgbRed
menjadi255
sumber
iif
, dan apakah ini mengembalikan nilai yang benar jika inputnya sama dengan 200?[A1]>200
membuat saya berpikir sebaliknya.iif
(disingkat darii
nlineif
) namun, Anda benar yang seharusnya>199
bukan>200
tangkapan yang bagus!HTML + CSS + JavaScript (ES6),
7459 byteMengambil input sebagai argumen fungsi
f
, sepertif(100)
.HTML
CSS
JavaScript (ES6)
Cuplikan Tes
sumber
f=a=>n.id=a>199&&"r"
j,#r
untuk menyimpan 3 byte.Haskell ,
5453 byteEDIT:
0
argumen dalam urutan pelarian terakhir dapat dibatalkan.f
mengambil integer dan mengembalikan sebuah string. Gunakan sebagaiputStrLn$f 200
.Cobalah online! Sayangnya, warnanya tidak muncul di TIO, tetapi Anda dapat melihat bahwa kode ANSI ditempatkan dengan benar.
Golf kelihatannya mereda dengan cepat dengan yang satu ini - bahkan tidak menyebutkan string pelarian sepertinya menyelamatkan apa pun. Bit paling pintar berulang dengan
f 0
menggunakan cabang lain sebagai substring. Tiga upaya berbeda dalam menggunakan pemahaman daftar semua muncul satu byte lebih lama. Mungkin yang terbaik yang saya temukan:sumber
f t=concat["\27[31m"|t>199]++"NO \27[31mVACANCY\27[0m"
.concat
lebih pendek daripadaid=<<
karena tanda kurung.Skrip Bash, 60 byte
sumber
Bash script, 64 bytes
.Mathematica, 67 byte
atau (60 byte, tetapi dapat dianggap curang)
Ini sebenarnya
Times["NO","VACANCY"]
, tetapi tampaknya benar.sumber
BASH, 100 byte
Ini mungkin golf, tapi saya tepat waktu. Saya akan kembali lagi nanti.
-5 byte terima kasih kepada @R. Kap
sumber
if [ $1 -le 200 ]
denganif(($1<200))
menghemat 5 byte dan memperbaiki bug dari output yang tidak muncul dengan warna merah dengan input200
.Mathematica, 47 byte
sumber
C (* terminal gaya nix),
50555251 byte-1 terima kasih kepada Wheat Wizard
␛ singkatan dari byte ESC literal, ASCII 27.
Panggil dengan
f(200)
, 200 sebagai nomornya. MencetakNO VACANCY
berwarna sesuai spesifikasi.sumber
␛[0m
ke␛[m
PHP, 41 byte
␛ mewakili karakter Escape.
sumber
shortC , 48 byte
Di mana ␛ adalah ASCII 27, byte ESCAPE.
sumber
GW-BASIC ,
787465 byte-12 Terima kasih kepada Orjan Johansen
Meminta pengguna untuk bilangan bulat. Keluaran:
sumber
:
?BASICA
untuk mendapatkan sesuatu yang cukup dekat, meskipun mungkin tidak memiliki warna.PRINT
. Namun, Anda tidak perlu spasi setelah nomor baris, danPRINT
dapat disingkat?
.?
=PRINT
. Memperbarui ...x
.Tcl / Tk, 96 byte
sumber