Oczywiście trzeba wydrukować grecki alfabet. Ale pomyślałem, że uczynię to nieco bardziej interesującym, więc jest pewien zwrot: gdy twój program jest uruchamiany z argumentem (cokolwiek), powinien wypisać alfabet grecki małymi literami.
Informacja
- Alfabet grecki (wielkie litery):
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
- Alfabet grecki (małe litery):
αβγδεζηθικλμνξοπρστυφχψω
Zasady / wymagania
- Każde zgłoszenie musi być pełnym programem.
- Wbudowane do drukowania alfabetu greckiego nie są dozwolone
- Obowiązują standardowe luki
- Musisz wydrukować dokładnie to, co pokazano.
Punktacja
Programy są oceniane według bajtów. Jeśli używasz zestawu znaków innego niż UTF-8, proszę określić. Postaraj się uzyskać jak najmniej bajtów od wszystkich, to jest golf golfowy !
Przypadki testowe
./program
==> ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
./program 1
==> αβγδεζηθικλμνξοπρστυφχψω
./program 'lower'
==> αβγδεζηθικλμνξοπρστυφχψω
./program 123897883421
==> αβγδεζηθικλμνξοπρστυφχψω
./program ""
==> αβγδεζηθικλμνξοπρστυφχψω
greek();
==> ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
greek("blah");
==> αβγδεζηθικλμνξοπρστυφχψω
greek(123);
==> αβγδεζηθικλμνξοπρστυφχψω
Zgłoszenia
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
# Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Tabela liderów
Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.
/* 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>
Odpowiedzi:
05AB1E , 16 bajtów
Wykorzystuje kodowanie CP-1252 .
Wypróbuj online!
Wyjaśnienie
źródło
[0 ... 23]
czy[0, 24)
zamiast[0 ... 24]
czy[0, 24]
?Rubinowy, 56 bajtów
Pełny program Nie sądzę, że odpowiedź na funkcję / lambda będzie krótsza niż dla tego języka.
Dangit, sigma
ς
. Dlatego nie możemy mieć miłych rzeczy. I ty także (postać niepodlegająca wymianie, która służy jako symbol zastępczy dla „wielkich liter”ς
)źródło
JavaScript (ES6),
898381 bajtówJeśli tablica znaków jest dopuszczalna, to dla
828078 bajtów:Edycja: Zaoszczędź sporo bajtów dzięki @ETHproductions.
źródło
String.fromCharCode(...array)
jest ponownie krótsze:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
String.fromCharCode
podłogi, możesz zapisać kolejne dwa bajty w ten sposób:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
String.fromCharCode(...)
ale lubię tęi*1.06
sztuczkę! Niestety, o ile wiem, rozumienie jest tym razem bajtem dłuższym.(...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])
(82).!!
, ponieważ będzie tylko zero lub jeden argument.Haskell,
114108 bajtówDzięki @xnor za zapisanie 6 bajtów
To może wygrać w kategorii najdłuższego importu, jeśli nic więcej…
źródło
q[a,b]=[a..b]
użycie 4 razy.getArgs>>=putStr.f
jest krótszy.CJam , 16 bajtów
Wypróbuj online!
źródło
Pyke,
552120 bajtówWypróbuj tutaj!
źródło
Właściwie 62 bajty
Wypróbuj online!
Ponieważ część greckiego alfabetu nie występuje w CP437, to rozwiązanie jest zakodowane w UTF-8 i odpowiednio oceniane. Oto zrzut heksowy (odwracalny z
xxd -r
):Wyjaśnienie:
źródło
Python 3,
807776 bajtówStara wersja:
Starsza wersja:
źródło
[a,a.lower()][len(sys.argv)-1]
ponieważ komentarze mówią, że zawsze będzie tylko jeden argument.[a.lower(),a][-len(sys.argv)]
.R,
1049992 bajtówGra w golfa na drugiej wersji, którą wcześniej miałem. Działa tak samo jak poprzednia wersja.
Dzięki @JDL za golenie 7 bajtów!
Stare wersje o 104 bajtach:
Mam dwa różne rozwiązania z tą samą liczbą bajtów:
Lub:
Objaśnienia:
Stosowanie:
Z niektórych powodów nie działa na R-Fiddle (zmienia
"
się'
na domyślnie, co powoduje, że kod generuje błąd), ale możesz wypróbować go na Ideone .źródło
+'if'(missing(x),0,32)
się+32*!missing(x)
?Japt ,
2119 bajtówTestuj (brak danych wejściowych)
Testuj (dane wejściowe pusty łańcuch)
Wyjaśnienie
źródło
Scala, 82 bajty
Nie golfowany:
Niestety,
(('Α'to'Ρ')++('Σ'to'Ω'))
jest toVector[Char]
, które byłoby wypisane jakoVector('Α', 'Β', ...
, więc musi zostać przekonwertowane na ciąg znaków za pomocąmkString
. Argument tomap
jest wywoływany,&
aby zaoszczędzić spacje między&else
,else&
a& toLower
.źródło
Galaretka , 21 bajtów
Pełny program
TryItOnline! - Uwaga: po uruchomieniu z argumentem konieczne będzie odświeżenie, aby uruchomić bez argumentu.
W jaki sposób?
źródło
PowerShell v2 +, 68 bajtów
Tylko ASCII, ale dane wyjściowe w UTF-16. Konstruuje
char
tablicę odpowiednich znaków,-join
s razem w łańcuch, przechowuje w$a
. Następnie używa!$args.count
jako indeksu w krotce, aby wyświetlać dane wyjściowe,$a
jeśli nie ma żadnych argumentów lub$a.ToLower()
jeśli jest co najmniej jeden argument.źródło
Python 3, 80 bajtów
źródło
C #, 174 bajtów
Leniwa implementacja, prawdopodobnie może dużo w golfa
źródło
tcl, 73
próbny
źródło
PHP, 84 bajtów
Wersja online
PHP, 87 bajtów
źródło
$argc>1
jest o 8 bajtów krótszy niżisset($argv[1])
i nie wymaga spacji.Siatkówka , 55 bajtów
Wypróbuj online
źródło
APL (Dyalog Extended) , 26 bajtów
Normalnym sposobem przekazywania wielu argumentów do programów APL są listy. Tak więc ten program monituje o taką listę, która może zawierać 0 lub 1 argumenty.
Wypróbuj online!
⎕
monit o listę argumentów≢
oblicz liczbę argumentów (0 lub 1)~
zaneguj to (1 lub 0)'Ω'×
„pomnóż” Omegę przez to (1 zachowuje wielkie litery, 0 fałduje małe)⍳
Wszystkie postacie odpowiednioΑ
-Ω
lubα
-ω
'ς'~⍨
usuń końcowe sigmas małe i „wielkie litery”źródło
Braingolf , 24 bajty
Wypróbuj online!
Wyjaśnienie:
źródło
PowerShell , 81 bajtów
Wypróbuj online!
źródło
Python 3, 78 bajtów
Wyjaśnienie
a
jest przesunięciem 32, gdy podano argument, aby użyć zakresu małych liter. Od 913 do 937 to zakres wartości Unicode dla wielkich liter alfabetu greckiego.źródło
Python 3 , 88 bajtów
źródło
Python 2, 108 bajtów
Strasznie golfa, może :(
I nie, nie mogę użyć
A.lower()
.Dzięki 13285 (alexwlchan) za -11 bajtów.
źródło
A,a
i po prostu używając tych ciągów bezpośrednio wprint
.Mathematica, 91 bajtów
Scenariusz. Po prostu pobiera zakres znaków od
Α
doΩ
, usuwa U + 03A2 /ς
, konwertuje na małe litery lub nie, i drukuje.źródło
Perl, 39 + 3 (
-C2
flaga) =4442 bajtyźródło
JavaScript, 95 bajtów
95 bajtów, ale tylko 71 znaków. Licznik bajtów . Za pomocą metody @Neil można ustalić, czy argumenty są przekazywane.
źródło
Java 7, 176 bajtów
Java 8, 173 bajtów
źródło
PHP, 79 bajtów
generuje jednostki HTML-u Unicode i dekoduje je. Uruchom z
-r
.źródło
Pip ,
2120 bajtówTo jest niezapomniany dzień. Pip
związałpobitą Galaretkę! 11 I przegrałem z dwoma innymi golfami, ale cokolwiek.
Wypróbuj online!
Wyjaśnienie
źródło