Na tej podstawie: Zrób ze mnie kwadrat!
Musisz wygenerować to:
####
# # #
### #
# # #
####
Gdzie „#” zastępuje się wejściem.
Jeśli wpiszesz „A”, powinieneś dostać
AAAA
A A A
AAA A
A A A
AAAA
Jeśli wpiszesz „&”, powinieneś dostać
&&&&
& & &
&&& &
& & &
&&&&
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 = 121651; // 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 = 48934; // 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>
B³S‖O↗
może równie dobrze być blisko odpowiedzi 10 bajtów węglem chociaż ... ja po prostu nie zna języka na tyle dobrze, aby to zrobić, to naprawdę musi być strony tak , ale na węglu drzewnym.Odpowiedzi:
Marchewka , 31 bajtów
#
s są zastępowane przez dane wejściowe.Zasadniczo część tej odpowiedzi na ten problem.
źródło
05AB1E ,
1615 bajtówWypróbuj online!
Wyjaśnienie
źródło
•nxвΛ•bTRð¹ì‡6ô»
... twój bije nieco transliterację, tylko ze względu na wymagania dotyczące zamawiania; gdybym mógł wymyślić sposób na niejawne przyjęcie danych wejściowych i wygenerowanie ciągu01
w 1-bajcie, byłoby to rozwiązanie 13/14 bajtów.•nxвΛ•bT𹫇6ô»
lubð«T•nxвΛ•br‡6ô»
ma taką samą długość.Cubix , 62 bajty
Wypróbuj online! i patrz na tłumacza!
To pasuje do 4-kostki:
Nie jestem zbyt dobry w manipulowaniu kierunkiem wskaźnika instrukcji, więc będę nadal próbował grać w golfa. Zarówno to, jak i moja odpowiedź tutaj oparte są na „Cześć, świecie!” przykładowy program używający
./v.o;@?/
(na 3-sześcianie) do rekurencyjnego drukowania i wstawiania znaków na stosie, więc reszta kodu po prostu wypycha znaki na stos we właściwej kolejności.Zrobiłem teraz kostkę na kostce, więc mogę spokojnie odpoczywać (i wykonywać swoją pracę).
źródło
SOGL ,
1310 bajtówWyjaśnienie:
źródło
MATL ,
1310 bajtówPodziękowania dla Conora O'Briena za usunięcie 3 bajtów i za pokazanie mi, że w Octave można użyć niedrukowalnych materiałów.
Kod zawiera znaki niedrukowalne. Wypróbuj online!
Wyjaśnienie
źródło
echo 0f15392a3c|xxd -r -p|clip
. Wclip
systemie Windows jest schowek. Następnie wkleiłem je: P (jeśli korzystasz z linii poleceń, to^O^U
też)PHP, 52 bajty
Wypróbuj online!
źródło
Japt , 20 bajtów
Przetestuj online!
Nieźle jak na język bez wbudowanej kompresji (cóż, z wyjątkiem kompresji ciągów małych liter) ...
Wyjaśnienie
Binarnie pięć znaków w ciągu to:
Odetnij inicjał
1
z każdego, a otrzymasz wzór dla kostki.źródło
ll
można go skompresować), ale jest on o 11 bajtów dłuższy.LOLKOD,
202170 bajtówW LOLCODE niewiele do golfa ...
To ustawia zmienną
c
na wejściu i tworzy gigantyczny połączony ciąg zawierający:)
nowe linie. O to chodzi.źródło
expected HAI at: I
tio.run/nexus/…VISIBLE
niejawnie łączy się, dzięki czemu można usunąćSMOOSH
tio.run/nexus/lolcode#@@/…Sed, 40 znaków
Prawie oszustwo, ponieważ opis wyzwania zawierał go prawie dosłownie.
Przykładowy przebieg:
Wypróbuj online!
źródło
Python 2 , 61 bajtów
Wypróbuj online!
źródło
Zespół Z80, kod maszynowy 37 bajtów
Załóżmy, że urządzenie we / wy zamapowane w pamięci:
źródło
V , 27 bajtów
Wypróbuj online!
Hexdump:
źródło
o<esc>
tylkoï
PHP, 72 bajty
Zrobiłem to tylko dla zabawy, ponieważ jest już lepsza odpowiedź na PHP.
Sześcian jest rysowany przez uzyskanie wartości binarnej
64349871
, połączonej przez'00'
.Zwraca to:
Co 6 znak wypisuję nowy wiersz, co powoduje:
I zamiast wyświetlać
0
wyświetla spację, która będzie wyglądać następująco:źródło
Węgiel drzewny ,
1716 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Dłuższy, niż chciałem, bo „sześcian” jest nieco szerszy niż wysoki lub głęboki. Na szczęście niektóre wielokierunkowe postacie działają z PolygonHollow, co oszczędza mi 3 bajty. Edycja: Zapisano kolejny bajt, używając + zamiast T ↑. Wyjaśnienie:
W momencie wyzwania
q
zmienna nie działała w trybie pełnym, w przeciwnym razie mógłbym utworzyć tę 14-bajtową wersję:Wypróbuj online!
źródło
Ułożone , 31 bajtów
Wypróbuj online!
Oto zrzut heksowy:
Konwertuje tablicę znaków na binarną, dopełnia każdy wiersz do długości
6
i indeksuje go zgodnie z łańcuchem' ' input +
źródło
Pyth,
25222120 bajtówSpróbuj!
21 bajtów
Spróbuj tego!
Również 21 bajtów:
Spróbuj tego!
źródło
JS (ES6),
646052 bajtówCzy można to poprawić:
źródło
y=i+i+i+i
jest krótszy niży=i.repeat(4)
####
jest jeszcze krótszy.C (gcc) ,
9084 bajtówWypróbuj online! Definiuje funkcję,
f
która przyjmuje postaćg
. Szkoda, że bezpośrednie kodowanie tabeli jest krótsze ...Stara wersja, 90 bajtów
(Wciąż próbuję zagrać w golfa)
Próbuję mieć tylko jednego
putchar
, ale idka. Są niedrukowalne, więc oto zrzut heksowy:To koduje kostkę w binarnej tabeli odnośników, gdzie
1
bit reprezentuje dane wejściowe, a0
bit reprezentuje spację. Wypróbuj online!źródło
Brain-Flak , 217 bajtów
Wypróbuj online!
Waaaaay za długo.
źródło
Swift - 82 bajty + podstawa (18 bajtów)?
Domyślnie projekty Xcode-Swift mają
Whole-Module Optimization
, więcimport Foundation
nie jest to wymagane dla tej prostej funkcji podobnej do lambda. Jednak uruchomienie go w środowiskach online wymaga tego, co może dodać 18 bajtów.Sprawdź to!
źródło
Java 8, 55 bajtów
Wypróbuj tutaj.
Java 7, 77 bajtów
Wypróbuj tutaj.
źródło
CJam, 23 bajty
Czuję, że wciąż mogę grać w golfa.
źródło
dc , 70 bajtów
Koduje sekwencję raczej bezpośrednio, z niewielką optymalizacją:
Wypróbuj online!
W skrajności (niezbyt golfowej), 145 bajtów:
Wypróbuj online!
To oblicza
A*x+B
, gdzieA
koduje pozycje znaku wejściowego iB
koduje całą resztę:P
polecenie wypisuje wynikową liczbę jako strumień bajtów.źródło
C #, 53 bajty
źródło
Pakiet Windows, 79 bajtów
Specjalny znak bezpieczny, 97 bajtów:
źródło
.. %1%1%1%1\n %1 %1 %1...
Tcl, 60 bajtów
źródło