Мы все видели знаки на мотелях, говорящие нам, есть ли вакансия или нет:
Как правило, на них постоянно горят буквы ВАКАНСИИ , и загораются буквы НЕТ , если в мотеле нет места.
Соревнование
Средний мотель в США имеет 200 номеров.
Вы напишите программу / функцию, которая принимает целое число T (для занятых комнат) в качестве единственного ввода.
Ваша программа будет отображать слова NO VACANCY
. Буквы VACANCY
будут напечатаны красным цветом.
Если T ≥ 200, буквы NO
также будут напечатаны красным цветом.
Например, предполагается, что a.out
ваша программа и «input» = аргумент командной строки: (Я опечатал, и моя система игнорирует регистр.)
Правила
- Ваша программа / функция должна отображать (или, если лямбда-выражение, возвращать ) точную строку
NO VACANCY
, включая регистр. - Ваша программа / функция может устанавливать только красный цвет текста, а не фон.
- Если вы хотите, вы можете использовать управляющие коды ANSI для печати красного цвета -
\x1b[31m
будет работать. - Ваша программа / функция не может изменить цвет текста вашей оболочки после ее завершения.
- Ваша программа / функция должна завершаться нормально.
- Ваша программа / функция должна печатать только на стандартный вывод.
- Ваша программа / функция должна использовать цвет фона оболочки / терминала / IDE по умолчанию. (Если вы хотите иметь графический вывод, вы можете выбрать любой цвет, кроме красного.)
- Если T ≤ 200, буквы
NO
должны быть напечатаны в цвете переднего плана вашей оболочки / терминала / IDE по умолчанию. (Если вы хотите иметь графический вывод, еще раз вы можете выбрать любой цвет, который вам нравится) - Если по какой-либо причине цвет переднего плана / фона вашей оболочки / терминала / IDE по умолчанию красный, вы должны печатать с черным фоном и белым передним планом по умолчанию.
- Если вы решите использовать графический вывод, красный цвет можно использовать только в том случае, если он указан в программе (например, цвет фона или цвет текста по умолчанию могут не быть красным).
Победитель
Как обычно с code-golf , выигрывает самая короткая программа! Брауни очки для графического вывода.
Я приму самый короткий ответ за неделю. Удачного игры в гольф!
Leaderboard
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>
Ответы:
Желе ,
2926 байтИспользуется
<CSI>
( 0x9b ), который короче<ESC>[
( 0x1b 0x5b ).Он сбрасывает цвет переднего плана с
<CSI>m
вместо<CSI>0m
, так как 0 неявно.верификация
Обратите внимание, что ваш эмулятор терминала (например, Konsole) должен быть настроен на ISO 8859-1 или аналогичный.
Как это устроено
источник
Javascript (ES6), 60 байт
(Откройте консоль браузера во время работы с фрагментом, чтобы увидеть цветной результат.)
источник
NO%c VACANCY color:red
?console.log()
как правила указывают, что с возвратами все в порядке, вам также не нужно определять функцию.Ruby (терминал * nix),
5448454443 байта1 байт сохранен благодаря Value Ink
␛
заменяет буквенный ESC-байт (ASCII 27)Порт моего ответа Python, который
нанесколько байтов короче. Я новичок в рубиновом гольфе, но хочу учиться, поэтому обратная связь приветствуется.источник
->x{"#{x>199?"␛[31m":p}NO␛[31m VACANCY␛[m"}
сохраняет байт. Хитрость заключается в том, что при строковой интерполяции"#{nil}"
вычисляется пустая строка, иp
ее можно использовать в качестве заменыnil
.Python 3 (* терминал в стиле nix),
5554 байтаЭто использует управляющие коды ANSI.
\033[31m
Делает терминал красным, если x меньше 200, мы начнем с того, чтоNO
красный станет красным, в противном случае у нас будет один послеNO
того, как он станет красным в любом случае. Когда мы закончим,\033[m
очищаем цвет от терминала.источник
HTML,
7271 байтисточник
Java (OpenJDK 9) ,
102898851 байтДа, ява : P Это работает только на * nix терминалах.
источник
bash, 41 байт
где ␛ представляет буквальный символ ESC (ASCII \ 033).
источник
Go ,
8281 байтЭто работает только на * nix терминалах.
Интересно, как легко было бы перенести это на Java ...Готово.источник
BASH / MKSH,
48 4746 байтовПримечание: ^ [означает символ ESC шириной 1 байт: 0x1b или десятичное 27.
^ M означает символ CR шириной 1 байт: 0x0d, десятичное 13.
источник
Excel VBA,
767372 байтаФункция анонимного непосредственного окна VBE, которая принимает данные ожидаемого типа
Integer
из ячейки[A1]
и выводит знак (НЕТ) ВАКАНСИИ через ячейкиA2:B2
-3 байта для перехода
rgbRed
на255
источник
iif
, и возвращает ли это правильное значение, если входное значение равно 200?[A1]>200
заставляет меня думать иначе.iif
(сокращенно отi
nlineif
), однако, вы правы, это должно быть,>199
а не>200
хороший улов!HTML + CSS + JavaScript (ES6),
7459 байтПринимает ввод как аргумент функции
f
, вродеf(100)
.HTML
CSS
JavaScript (ES6)
Тестовый фрагмент
источник
f=a=>n.id=a>199&&"r"
j,#r
3 байта.Haskell ,
5453 байтаРЕДАКТИРОВАТЬ:
0
аргумент в последней последовательности escape может быть отброшен.f
принимает целое число и возвращает строку Использовать какputStrLn$f 200
.Попробуйте онлайн!Увы, цвета не отображаются в TIO, но вы можете видеть, что коды ANSI расположены правильно.
Гольф, казалось, довольно быстро прекратился с этим - даже не называя последовательности, кажется, что-то спасает. Самый умный бит повторяется с
f 0
использованием другой ветви в качестве подстроки. Три разные попытки использования списочных представлений оказались на один байт длиннее. Возможно, самое хорошее, что я нашел:источник
f t=concat["\27[31m"|t>199]++"NO \27[31mVACANCY\27[0m"
.concat
был короче, чемid=<<
из-за скобок.Скрипт bash, 60 байт
источник
Bash script, 64 bytes
.Mathematica, 67 байт
или (60 байт, но это может считаться мошенничеством)
Это действительно так
Times["NO","VACANCY"]
, но кажется правильным.источник
BASH, 100 байт
Это может быть, вероятно, в гольф, но у меня мало времени. Я вернусь к этому позже.
-5 байт благодаря @R. Kap
источник
if [ $1 -le 200 ]
наif(($1<200))
5 сохраняет байты и исправляет ошибку вывода, не отображаемую красным цветом при вводе200
.Mathematica, 47 байт
источник
C (* терминал в стиле nix),
50555251 байт-1 благодаря Мастеру Пшеницы
␛ обозначает буквальный байт ESC, ASCII 27.
Позвоните
f(200)
, номер 200.NO VACANCY
Цветные отпечатки по спецификации.источник
␛[0m
на␛[m
PHP, 41 байт
␛ представляет символ побега.
источник
shortC , 48 байтов
Где ␛ обозначает ASCII 27, байт ESCAPE.
источник
GW-BASIC,
787465 bytes-12 thanks to Orjan Johansen
Prompts user for an integer. Output:
источник
:
?BASICA
to get something close enough, although it may not have color.PRINT
. However, you don't need spaces after the line numbers, andPRINT
can be abbreviated to?
.?
=PRINT
. Updating...x
.Tcl/Tk, 96 bytes
источник