Lowongan atau tidak ada lowongan?

17

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 VACANCYakan dicetak dengan warna merah.
Jika T ≥ 200, huruf-huruf NOjuga akan dicetak dengan warna merah.

Misalnya, anggap a.outprogram Anda dan "input" = argumen baris perintah: (Saya salah ketik dan sistem saya mengabaikan huruf besar-kecil).
masukkan deskripsi gambar di sini

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[31makan 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 NOharus 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 , 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>

MD XF
sumber
2
Ada aturan yang saling bertentangan: di dalam dan di atas tangkapan layar, dikatakan mencetak TIDAK dengan warna merah "Jika T ≥ 200". Kemudian, Anda mengatakan untuk mencetak dalam warna default "If T ≤ 200"
Arc676
2
@ Arc676 Ups. Nah, secara logis, jika hotel ini memiliki 200 kamar maka itu harus menjadi deskripsi pertama yang benar.
Ørjan Johansen
3
Untuk kredit tambahan, lakukan untuk Hilbert Hotel, yang memiliki jumlah kamar tak terbatas.
David Conrad
Apakah output ini valid: i.imgur.com/221Qxgj.png ?
sergiol
@sergiol Ya, tidak apa-apa.
MD XF

Jawaban:

8

Jelly , 29 26 byte

<200o-“NO“ɓ31m”m“=ȤŻ»Œu“ɓm

Ini menggunakan <CSI>( 0x9b ), yang lebih pendek dari <ESC>[( 0x1b 0x5b ).

Ini me-reset warna foreground dengan <CSI>mbukannya <CSI>0m, karena 0 implisit.

Verifikasi

Perhatikan bahwa emulator terminal Anda (misalnya, Konsole) harus disetel ke ISO 8859-1 atau serupa.

tangkapan layar

Bagaimana itu bekerja

<200o-“NO“ɓ31m”m“=ȤŻ»Œu“ɓm  Main link. Argument: n (integer)

<200                        Compare with 200, yielding 1 if true, 0 if not.
    o-                      Logical OR -1; map 0 to -1 (and 1 to 1).
      “NO“ɓ31m”             Yield ["NO", "\x9b31m"].
               m            Take the list "modulo" 1 or -1, keeping it as is for 1,
                            reversing it for -1.
                “=ȤŻ»       Implicitly print the previous result and yield the
                            string " vacancy". This is achieved by indexing into
                            Jelly's in-built dictionary.
                     Œu     Convert to uppercase.
                       “ɓm  Implicitly print the previous result and yield the
                            string "\x9bm", which is printed on exit.
Dennis
sumber
11

Javascript (ES6), 60 byte

(Buka konsol peramban Anda saat menjalankan cuplikan untuk melihat hasil berwarna.)

tangkapan layar

f=
n=>console.log((n>199?'%cNO':'NO%c')+' VACANCY','color:red')
<input oninput=f(this.value)>

nderscore
sumber
1
NO%c VACANCY color:red?
MD XF
1
@MDXF memeriksa konsol browser Anda yang sebenarnya. emulator konsol cuplikan tidak mendukungnya.
nderscore
2
Oh, tangkapan yang bagus. +1
MD XF
2
Aturan JS standar memungkinkan Anda untuk mempersingkat ini. Hapus console.log()karena aturan menetapkan bahwa pengembalian baik-baik saja, Anda tidak harus mendefinisikan fungsi juga.
MayorMonty
4
@ MayorMonty solusi ini secara khusus memanfaatkan fungsionalitas console.log untuk membuat teks berwarna, jadi saya akan merasa aneh tidak memasukkannya.
nderscore
8

Ruby (* terminal gaya nix), 54 48 45 44 43 byte

1 byte disimpan berkat Value Ink

berdiri untuk byte esc literal (ASCII 27)

->x{"#{x>199?"␛[31m":p}NO␛[31m VACANCY␛[m"}

Sebuah port jawaban python saya, yaitu byte beberapa byte lebih pendek. Saya baru mengenal golf ruby, tetapi ingin sekali belajar sehingga umpan balik sangat dihargai.

Posting Rock Garf Hunter
sumber
1
->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, dan pdapat digunakan sebagai pengganti nil.
Value Ink
6

Python 3 (* terminal gaya nix), 55 54 byte

lambda x:"\033[31m"*(x-199)+"NO\033[31m VACANCY\033[m"

Ini menggunakan kode pelarian ANSI. \033[31mMembuat terminal merah, jika x kurang dari 200 kita akan mulai dengan satu membuat NOmerah, jika tidak kita akan memiliki satu setelah NOmembuatnya merah. Ketika kita selesai \033[mmembersihkan warna dari terminal.

Posting Rock Garf Hunter
sumber
Perkalian dari string warna bukannya suatu kondisi yang brilian!
Hubert Grzeskowiak
6

HTML, 72 71 byte

<input min=200 type=number><x>NO <y>VACANCY<style>:valid+x,y{color:red}

GOTO 0
sumber
10
Anda dapat menyimpan 1 byte dengan menggunakan kata-kata yang benar ...
Neil
6
Ya ampun ... aku butuh liburan.
GOTO 0
3
Salah satu jawaban lain mendefinisikan CSS secara terpisah. Jika Anda melakukannya juga, Anda dapat menyimpan 7 karakter dengan "<style>" (
permainan
4

Java (OpenJDK 9) , 102 89 88 51 byte

Ya, jawa : P Ini hanya berfungsi pada terminal * nix.

x->(x>199?"\033[31m":"")+"NO\033[31m VACANCY\033[m"
benar-benar manusiawi
sumber
3

bash, 41 byte

echo ␛[$[($1>199)*31]mNO ␛[31mVACANCY␛[0m

di mana ␛ mewakili karakter ESC literal (ASCII \ 033).

yoann
sumber
1
perkalian brilian!
Ipor Sircer
3

Pergi , 82 81 byte

Ini hanya berfungsi pada terminal * nix. Saya bertanya-tanya betapa mudahnya untuk port ini ke Jawa ... Selesai.

func f(x int)string{v:="NO\033[31m VACANCY\033[m";if(x>199){v=v[2:7]+v};return v}
benar-benar manusiawi
sumber
2
Saya melihat port Java datang.
MD XF
NinjaDengan 11 detik. XD
totallyhuman
3

BASH / MKSH, 48 47 46 byte

(($1>199))&&a=^[[31m;echo $a^MNO ^[[31mVACANCY^[[m

Catatan: ^ [berarti karakter ESC lebar 1 byte: 0x1b atau desimal 27.

^ M berarti karakter CR lebar 1 byte: 0x0d, desimal 13.

Ipor Sircer
sumber
3

Excel VBA, 76 73 72 Bytes

Fungsi jendela langsung VBE anonim yang mengambil input tipe yang diharapkan Integerdari sel [A1]dan mengeluarkan tanda (TIDAK) VACANCY di seluruh selA2:B2

[A2]="NO":[B2]="VACANCY":Range([If(A1>199,"A2:B2","B2")]).Font.Color=255

-3 Bytes untuk diubah rgbRedmenjadi255

Taylor Scott
sumber
1
Maaf jika ini salah, saya tidak lancar menggunakan Excel. Tetapi apakah Anda bermaksud menulis iif, dan apakah ini mengembalikan nilai yang benar jika inputnya sama dengan 200? [A1]>200membuat saya berpikir sebaliknya.
MD XF
1
@ MDXF Ya, saya memang bermaksud menulis iif(disingkat dari inline if) namun, Anda benar yang seharusnya >199bukan >200tangkapan yang bagus!
Taylor Scott
2

HTML + CSS + JavaScript (ES6), 74 59 byte

Mengambil input sebagai argumen fungsi f, seperti f(100).

HTML

<x id=n>NO <j id=r>VACANCY

CSS

#r{color:red

JavaScript (ES6)

f=a=>a>199?n.id="r":0

Cuplikan Tes

f=a=>a>199?n.id="r":0

f(prompt("Enter a number"))
#r{color:red
<x id=n>NO <j id=r>VACANCY

Arjun
sumber
3
Gah braket keriting yang tertutup itu mengerikan ...
Beta Decay
@BetaDecay HAHA! LOL! : D
Arjun
@BetaDecay, aku merasa bersamamu .... Rasanya sakit sekali di dalam hatimu <s> hati </s> kode tingkat perakitan ...
Roman Gräf
1
-1:f=a=>n.id=a>199&&"r"
nderscore
Singkirkan id elemen kedua dan atur pemilih aturan CSS j,#runtuk menyimpan 3 byte.
Hubert Grzeskowiak
2

Haskell , 54 53 byte

EDIT:

  • -1 byte: Dari jawaban @ Dennis's Jelly, 0argumen dalam urutan pelarian terakhir dapat dibatalkan.

fmengambil integer dan mengembalikan sebuah string. Gunakan sebagai putStrLn$f 200.

f t|t>199="\27[31m"++f 0|0<1="NO \27[31mVACANCY\27[m"

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 0menggunakan cabang lain sebagai substring. Tiga upaya berbeda dalam menggunakan pemahaman daftar semua muncul satu byte lebih lama. Mungkin yang terbaik yang saya temukan:

f t=foldr drop"\27[31mNO \27[31mVACANCY\27[m"[5|t<200]
Ørjan Johansen
sumber
54 byte alternatif: f t=concat["\27[31m"|t>199]++"NO \27[31mVACANCY\27[0m".
Laikoni
@Laikoni Oh! Saya sangat dekat dengan itu tetapi entah bagaimana tidak pernah memperhatikan concatlebih pendek daripada id=<<karena tanda kurung.
Ørjan Johansen
@Laikoni Dengan tip Dennis, itu juga 53 byte.
Ørjan Johansen
2

Skrip Bash, 60 byte

c="\e[1;31m";((199<$1))&&printf $c;printf "NO$c VACANCY\e[m"
JC
sumber
4
Asal tahu saja, downvote dilakukan secara otomatis oleh pengguna Komunitas saat jawaban Anda diedit. Saya menganggap ini sebagai bug .
Dennis
@MDXF Input melalui argumen baris perintah.
Dennis
@ Dennis Ah, salahku. Anda mungkin ingin mengubah tajuk Bash script, 64 bytes.
MD XF
Kecuali jika Anda benar-benar melakukan ratusan pengeditan, Anda dapat mengedit jawaban Anda setiap kali mendapat ide. Suntingan dalam jendela 5 menit yang sama akan dikelompokkan ke dalam satu revisi.
Dennis
1
Ini tidak mengatur ulang warna terminal di akhir, yang diperlukan.
Post Rock Garf Hunter
1

Mathematica, 67 byte

Print[s=Style[#,FontColor->Red]&;If[#>200,s,#&]@"NO",s@" VACANCY"]&

atau (60 byte, tetapi dapat dianggap curang)
Ini sebenarnya Times["NO","VACANCY"], tetapi tampaknya benar.

(s=Style[#,FontColor->Red]&;If[#>200,s,#&]@"NO")s@"VACANCY"&
pengguna202729
sumber
1

BASH, 100 byte

if(($1<200));then
echo -n NO
else
echo -ne '\033[31mNO\033[0m'
fi
echo -e '\033[31m VACANCY\033[0m'

Ini mungkin golf, tapi saya tepat waktu. Saya akan kembali lagi nanti.

-5 byte terima kasih kepada @R. Kap

Arc676
sumber
Mengganti if [ $1 -le 200 ]dengan if(($1<200))menghemat 5 byte dan memperbaiki bug dari output yang tidak muncul dengan warna merah dengan input 200.
R. Kap
@ R. Terima kasih. OP meminta warna default kurang dari atau sama dengan 200.
Arc676
Tidak, OP meminta semua red ouput untuk input lebih dari atau sama dengan 200.
R. Kap
1

Mathematica, 47 byte

(If[#>199,Style[NO,Red],NO]Style[VACANCY,Red])&
J42161217
sumber
1

C (* terminal gaya nix), 50 55 52 51 byte

-1 terima kasih kepada Wheat Wizard

f(t){printf("␛[%dmNO ␛[31mVACANCY␛[m",t>199?31:0);}

␛ singkatan dari byte ESC literal, ASCII 27.

Panggil dengan f(200), 200 sebagai nomornya. Mencetak NO VACANCYberwarna sesuai spesifikasi.

MD XF
sumber
Di terminal saya, itu melanggar aturan Anda bahwa seharusnya tidak mengubah warna teks shell.
Ørjan Johansen
@ ØrjanJohansen Diperbaiki. Saya lupa bahwa saya menjalankan shell khusus yang secara otomatis mengatur warna.
MD XF
Anda dapat mengubah ␛[0mke␛[m
Post Rock Garf Hunter
1

PHP, 41 byte

␛[<?=$argn<200?31:''?>mNO␛[31m VACANCY␛[m

␛ mewakili karakter Escape.

pengguna63956
sumber
0

shortC , 48 byte

f(t){R"␛[%dmNO ␛[31mVACANCY␛[m",t>199?31:0

Di mana ␛ adalah ASCII 27, byte ESCAPE.

MD XF
sumber
0

GW-BASIC , 78 74 65 byte

-12 Terima kasih kepada Orjan Johansen

1INPUT X:IF X>199THEN COLOR 4
2?"NO ";:COLOR 4:?"VACANCY":COLOR 7

Meminta pengguna untuk bilangan bulat. Keluaran:

output

MD XF
sumber
Hm tidak dapat menemukan penerjemah online, tetapi tidak dapatkah baris 1 dan 2 bergabung :?
Ørjan Johansen
@ ØrjanJohansen Wow ... tidak percaya saya benar-benar merindukan itu. Terima kasih, dan ya, tidak ada penerjemah online. Namun, Anda dapat menggunakan emulator pertama di pcjs.org dan mengetik BASICAuntuk mendapatkan sesuatu yang cukup dekat, meskipun mungkin tidak memiliki warna.
MD XF
Dengan asumsi bahwa emulator cukup baik: Anda perlu baris baru sebelum yang pertama PRINT. Namun, Anda tidak perlu spasi setelah nomor baris, dan PRINTdapat disingkat ?.
Ørjan Johansen
@ ØrjanJohansen NO WAY. Saya telah menggunakan Microsoft BASIC selama delapan tahun dan saya tidak pernah baru tentang ?= PRINT. Memperbarui ...
MD XF
Anda melewatkan spasi nomor baris, dan tampaknya memiliki huruf kecil tersesat x.
Ørjan Johansen
0

Tcl / Tk, 96 byte

grid [label .n -text NO -fg [expr \$argv>199?"red":"tan"]]
grid [label .v -text VACANCY -fg red]

enter image description here

sergiol
sumber