/* Configuration */
var QUESTION_ID = 59464; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 43444; // 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 "http://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 "http://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,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\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,
});
else console.log(body);
});
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;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, 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_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) 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="language-list">
<h2>Shortest Solution 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>
<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>
<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:
Skrypt Vima,
2221 bajtówWyjaśnienie:
Pierwsze polecenie odwzorowuje
Q
na:vEU
zmień słowo na wielkie,W
aby przejść do następnego słowavEu
uczyń słowo na małe litery,W
aby przejść do następnego słowaQ
powtórz mapowanie rekurencyjnei
|norm Q
wykonuje mapowanieKorzystanie z programu
Oto jak Vim może czytać ze standardowego wejścia:
Otworzy się Vim wyświetlający to:
źródło
GNU sed, 28
Wynik obejmuje +2 za
-rz
przekazany do GNU sed.Wyjście testowe
źródło
Perl, 26 bajtów
25 bajtów kodu + 1 bajtowy wiersz poleceń
Dzięki ThisSuitIsBlackNot za naprawienie kilku błędów!
Stosowanie:
źródło
Pyth, 23
Wypróbuj online lub uruchom pakiet testowy
Na przemian pyth
lower
iupper
funkcje, którymi sąr...0
lubr...1
. Prawdopodobnie wpłynie to na znaki Unicode, czekając na wyjaśnienie OP, aby zmienić.Czuję, że coś musi grać w golfa. W szczególności XOR do zmiany przełącznika, na którym
upper
/lower
należy użyć.źródło
A\nB
powinny zostać wydrukowaneA\nb
.A new word is formed when there is a nonzero amount of whitespace after a non-whitespace character.
Dane wyjściowe dlaA\nB
toA\NB
. Ale wygląda na to, że Twoja odpowiedź na CJAM była poprawna.Perl, 87 bajtów
Po
map
pewnym czasie z użyciem wyrażeń regularnych nie mogłem znaleźć eleganckiego rozwiązania, więc oto rezultat:źródło
lc(<>)
, może byćlc<>
i użycie modyfikatora instrukcji dla twojegowhile
pozwala również pominąć nawias np.print$i++while$i<10
vswhile($i<10){print$i++}
. Jest przydatna strona, która bardzo mi pomogła Wskazówka dotycząca gry w golfa w PerluRubinowy, 56 bajtów
źródło
JavaScript ES6,
7471 bajtów.toUpperCase()
i.toLowerCase()
absolutnie zabijaj liczbę bajtów (dodaje 32 bajty 0.o). Większość obejść kończy się jednak większą liczbą bajtówźródło
Groovy,
108125120Nie tak czysty, jak się spodziewałem, co wydaje się być motywem moich odpowiedzi Groovy.
źródło
Lua, 96 bajtów
źródło
Python 3,
10395 bajtówźródło
[b.upper(),b.lower()][a%2]
aby zaoszczędzić 4 bajty (zakładając, że poprawnie policzyłem na telefonie komórkowym).STATA, 252 bajty
Oczekuje danych wejściowych w postaci pliku csv (jedna kolumna) o nazwie ab
Wyjaśnienie:
Wczytaj dane (domyślna nazwa zmiennej to v1, którą można skrócić do v). Utwórz nową zmienną b równą pierwszemu słowu (token oddzielony spacjami) v dla każdego wiersza. Dla każdego wiersza, podczas gdy następne słowo nie jest puste (występuje tylko wtedy, gdy nie ma już więcej znaków w tym wierszu), zamień słowo w v na wersję tego słowa pisaną wielkimi lub małymi literami w bieżącym wierszu, w zależności od liczby (mod 2 ) słowa zostały już znalezione. Następnie zdobądź następne słowo i powtórz. Po zakończeniu wydrukuj całą linię.
źródło
Delfy, 290 bajtów
Niezbyt dobry język do gry w golfa ...
źródło
Lua, 88 bajtów
źródło
CJam, 28 bajtów
Obecnie rozważam pierwsze 33 znaki ASCII / Unicode (i tylko te) białe znaki. Czekam na wyjaśnienia, aby wiedzieć, czy jest to ważne, czy nie.
Wypróbuj online w interpretatorze CJam .
źródło
Pyth,
1722 bajtówWypróbuj tutaj
źródło
C #,
10410099 bajtówMa 79 bajtów
źródło