Совершенно очевидно, что вы должны напечатать греческий алфавит. Но я подумал, что сделаю это немного интереснее, поэтому есть поворот: когда ваша программа запускается с аргументом (что угодно), она должна выводить греческий алфавит в нижнем регистре.
Информация
- Греческий алфавит (столицы):
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
- Греческий алфавит (строчные буквы):
αβγδεζηθικλμνξοπρστυφχψω
Правила / Требования
- Каждое представление должно быть полной программой.
- Встроенные функции для печати греческого алфавита не допускаются
- Применяются стандартные лазейки
- Вы должны напечатать именно то, что показано.
счет
Программы оцениваются в соответствии с байтами. Если вы используете набор символов, отличный от UTF-8, укажите это. Постарайтесь получить как можно меньше байтов из всех, это код-гольф !
Контрольные примеры
./program
==> ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
./program 1
==> αβγδεζηθικλμνξοπρστυφχψω
./program 'lower'
==> αβγδεζηθικλμνξοπρστυφχψω
./program 123897883421
==> αβγδεζηθικλμνξοπρστυφχψω
./program ""
==> αβγδεζηθικλμνξοπρστυφχψω
greek();
==> ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
greek("blah");
==> αβγδεζηθικλμνξοπρστυφχψω
greek(123);
==> αβγδεζηθικλμνξοπρστυφχψω
Материалы
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в свой заголовок несколько чисел (например, потому что ваш счет равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
# Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать название языка ссылкой, которая затем будет отображаться в фрагменте списка лидеров:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Leaderboard
Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам.
/* Configuration */
var QUESTION_ID = 97049; // 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 = 53406; // 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+)(?=[^\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>
Ответы:
05AB1E , 16 байтов
Использует кодировку CP-1252 .
Попробуйте онлайн!
объяснение
источник
[0 ... 23]
или[0, 24)
вместо[0 ... 24]
или[0, 24]
?Рубин, 56 байт
Полная программа. Я не думаю, что функция / лямбда-ответ будет короче этого языка для этого языка.
Дангит, сигма
ς
. Вот почему у нас не может быть хороших вещей. И вы тоже, (недопустимый символ, который служит заполнителем для «прописных букв»ς
)источник
JavaScript (ES6),
898381 байтЕсли массив символов допустим, то для
828078 байтов:Редактировать: Сохранено несколько байтов благодаря @ETHproductions.
источник
String.fromCharCode(...array)
снова короче:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
String.fromCharCode
этажи, вы можете сохранить еще два байта, например, так:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
String.fromCharCode(...)
но мне нравится этотi*1.06
трюк! К сожалению, на этот раз, насколько я могу судить, понимания на байт больше.(...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])
(82).!!
, так как будет только ноль или один аргумент.Haskell,
114108 байтСпасибо @xnor за сохранение 6 байтов
Это может победить в категории самых длинных импортеров, если ничего больше ...
источник
q[a,b]=[a..b]
использовать 4 раза.getArgs>>=putStr.f
корочеCJam , 16 байтов
Попробуйте онлайн!
источник
Пайк,
552120 байтПопробуй это здесь!
источник
На самом деле , 62 байта
Попробуйте онлайн!
Поскольку часть заглавного греческого алфавита отсутствует в CP437, это решение кодируется в UTF-8 и оценивается соответствующим образом. Вот hexdump (обратимый с
xxd -r
):Объяснение:
источник
Python 3,
807776 байтСтарая версия:
Старая версия:
источник
[a,a.lower()][len(sys.argv)-1]
потому что в комментариях говорится, что будет только один аргумент.[a.lower(),a][-len(sys.argv)]
.R,
1049992 байтаИгра в гольф на второй версии, которую я имел ранее. Работать так же, как и в предыдущей версии.
Спасибо @JDL за 7 байт!
Старые версии по 104 байта:
У меня есть два разных решения с одинаковым количеством байтов:
Или:
Пояснения:
Применение:
По некоторым причинам он не работает на R-Fiddle (он меняется
"
на'
по умолчанию, что заставляет код выдавать ошибку), но вы можете попробовать это на Ideone .источник
+'if'(missing(x),0,32)
на+32*!missing(x)
?Japt ,
2119 байтПроверить это (без ввода)
Проверить это (без ввода строки)
объяснение
источник
Scala, 82 байта
Ungolfed:
К сожалению,
(('Α'to'Ρ')++('Σ'to'Ω'))
этоVector[Char]
, который будет напечатан , какVector('Α', 'Β', ...
, поэтому он должен быть преобразован в строку сmkString
.The аргументомmap
называется ,&
чтобы сохранить пространство между&else
,else&
и& toLower
.источник
Желе , 21 байт
Полная программа
TryItOnline! - обратите внимание, что после запуска с аргументом обновление потребуется для запуска без аргумента.
Как?
источник
PowerShell v2 +, 68 байт
Только для ASCII, но выводится в UTF-16. Создает
char
массив из соответствующих символов,-join
объединяет его в строку и сохраняет в$a
. Затем используется!$args.count
как индекс в кортеже, чтобы вывести либо,$a
если аргументы отсутствуют, либо$a.ToLower()
если есть хотя бы один аргумент.источник
PHP, 84 байта
Онлайн версия
PHP, 87 байт
источник
$argc>1
на 8 байт корочеisset($argv[1])
и не нуждается в пробеле.APL (Dyalog Extended) , 26 байт
Обычный способ передачи нескольких аргументов в программы APL - через списки. Таким образом, эта программа запрашивает такой список, который может иметь 0 или 1 аргумент.
Попробуйте онлайн!
⎕
запросить список аргументов≢
подсчитать количество аргументов (0 или 1)~
отрицать это (1 или 0)'Ω'×
"умножить" Омега на это (1 держит верхний регистр, 0 сгибает в нижний регистр)⍳
Все персонажи изΑ
-Ω
илиα
-ω
соответственно'ς'~⍨
удалить строчные и "заглавные" последние сигмыисточник
Python 2, 108 байт
Ужасно гольф, может быть :(
И нет, я не могу использовать
A.lower()
.Спасибо 13285 (alexwlchan) за -11 байт.
источник
A,a
и просто используя эти строки непосредственно вprint
.Mathematica, 91 байт
Сценарий. Просто принимает диапазон символов от
Α
доΩ
, удаляет U + 03A2 /ς
, либо переводит в нижний регистр, либо нет, и печатает.источник
Perl, 39 + 3 (
-C2
флаг) =4442 байтаисточник
JavaScript, 95 байт
95 байтов, но только 71 символ. Счетчик байтов . Используя способ @Neil, чтобы определить, переданы ли аргументы.
источник
Java 7, 176 байт
Java 8, 173 байта
источник
Python 3, 80 байт
источник
C #, 174 байта
Ленивая реализация, вероятно, может играть в гольф много
источник
PHP, 79 байт
генерирует юникод html-сущности и декодирует их Беги с
-r
.источник
Пип ,
2120 байтЭто памятный день. Пип
связализбитого желе! 1+1 И проиграл двум другим гольф-глангам, но что угодно.
Попробуйте онлайн!
объяснение
источник
ткл, 73
демонстрация
источник
Сетчатка , 55 байт
Попробуйте онлайн
источник
Брайнгольф , 24 байта
Попробуйте онлайн!
Объяснение:
источник
PowerShell , 81 байт
Попробуйте онлайн!
источник
Groovy Script,
5451 байтредактировать
Переключено с
913..937
иit==930?:
на(913..937)-930
источник
Perl под Windows - консоль не поддерживает Unicode - (42 байта, включая пробелы)
Это не мое решение, я просто адаптирую решение Perl Дениса Ибаева, описанное выше, для консоли Windows Perl.
Код страницы консоли должен быть, конечно, греческим:
ПРИМЕЧАНИЕ: просто маленькая идея. На этой странице я вижу, что некоторые ответы используют CHARACTERS, которые кажутся Unicode выше 255. Поэтому эти символы занимают по крайней мере 2 байта для кодирования (возможно, 4, если один использует консоль, использующую 32-битные символы Unicode?). Разве не было бы лучше, если бы мерой соревнования была единица CHARACTER (будь то Unicode, ASCII или EBCDIC или что-то еще), а не просто BYTES? Разве это не было бы проще и более объединяющим (интересно, существует ли этот adjectif на английском языке, "unificateur" на французском)?
Предыдущий код по ошибке: не печатает строчные буквы омега.
Исправленный код (70 символов):
Я знаю, что мы не должны печатать форму сигмы «конец слова» («ς»), но поскольку в древнегреческом языке неправильно вводить обычную сигму («σ») в конце строчного слова, Я решил напечатать его, так как эта загадка называется «Распечатать греческий алфавит», и что этот персонаж является его частью ...
источник