W ramach tego wyzwania wspólnie stworzymy wyszukiwanie słów zawierające wiele programów w różnych językach.
Zacząłem od siatki 60 na 25 pustych pól ( ·
), z których niektóre zostały zastąpione znakami programu Ruby.
Aby odpowiedzieć, wybierz język, który nie był jeszcze używany. Używając wybranego języka, napisz program, który odczytuje znak, token, linię lub wszystkie dane wejściowe z konsoli i drukuje je . Następnie włóż swój program do wyszukiwania słów.
Załóżmy na przykład, że wybrałeś Python 3 i napisałeś program print(input())
. Teraz musisz wstawić ten program do siatki.
Jeśli siatka przed odpowiedzią wygląda następująco:
···a·24··········
··z····t·········
Następnie możesz po prostu umieścić swój program w drugiej linii, pokrywając się z istniejącym t
:
···a·24··········
··zprint(input())
Pamiętaj, że możesz umieścić swój program w dowolnym kierunku: do przodu, do tyłu, w górę, w dół lub po przekątnej, o ile jest on w linii prostej.
Ale co, jeśli istniejąca siatka wygląda następująco:
···a·24··········
··z····q·········
Nie ma sposobu, aby dopasować się print(input())
tutaj bez zmiany istniejących postaci, co jest zabronione. Zamiast tego możesz zmienić program:
print(
input())
Ten dwuliniowy program jest idealnie dopasowany:
···a·24·print(···
··z····q input())
Tutaj zamieniasz spację ( ·
) spacją (
). Jednak spacja jest jak każda inna postać i nie może zostać zastąpiona w przyszłych programach.
Podobnie jak program jednoliniowy, program wieloliniowy można umieścić w dowolnym kierunku. Na przykład na większej siatce można wykonać następujące czynności, obracając program o 135 ° zgodnie z ruchem wskazówek zegara.
··········
········ ·
·······i·p
······n·r·
·····p·i··
····u·n···
···t·t····
··(·(·····
·)········
)·········
Punktacja
Twój wynik za każdą odpowiedź jest trzydzieści podzielony przez liczbę dodanych znaków. Nie licz znaków, które już istniały w siatce, nawet jeśli sam ich używasz.
Twój łączny wynik to suma wyników dla wszystkich odpowiedzi pomnożona przez liczbę odpowiedzi. Najwyższy wynik wygrywa.
Zasady
- Każda odpowiedź musi być napisana w innym języku. Języki, które różnią się tylko numerem wersji (np. Python 2 i Python 3) są uważane za takie same.
- Każda odpowiedź musi opierać się na najnowszej prawidłowej odpowiedzi. Oznacza to, że weź siatkę najnowszej takiej odpowiedzi i włóż do niej swój program.
- Aby wstawić swój program, zastąp co najmniej jeden z odstępów (
·
) wybranymi znakami. Możesz użyć istniejących postaci z siatki w swojej odpowiedzi, ale nie możesz zmienić ani przenieść żadnego z nich.
- Nie możesz wstawiać łącznie więcej niż 500 znaków we wszystkich swoich odpowiedziach.
- Wszystkie wstawione znaki muszą być częścią Twojego programu.
- Twój program może składać się tylko z ASCII do druku i znaków nowej linii, ale nie może być dwóch lub więcej kolejnych linii po kolei.
- Nowe linie nie liczą się do twojego wyniku.
- Wymagany jest pełny program, a nie tylko funkcja lub fragment kodu.
- Ten sam użytkownik nie może napisać dwóch kolejnych odpowiedzi.
- Jeśli czyjaś odpowiedź narusza regułę, zostaw komentarz. Jeśli błąd nie zostanie naprawiony w ciągu 30 minut, należy go usunąć.
Fragment kodu używanego języka
To jest fragment kodu, stworzony przez ETHproductions, FryAmTheEggman i Mauris, który śledzi wyniki użytkowników i używane języki. Został on pierwotnie skopiowany z niesamowitego szablonu Martina Büttnera .
Oryginalna tabela wyników:
function answersUrl(e){return"http://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,r){return"http://api.stackexchange.com/2.2/answers/"+r.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 r=+e.share_link.match(/\d+/);answer_ids.push(r),answers_hash[r]=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=[],r={},x={};answers.forEach(function(s){var a=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(a="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var n=a.match(SCORE_REG);if(n){var t=getAuthorName(s);e.push({user:getAuthorName(s),size:+n[2],language:n[1],link:s.share_link}),r[t]=r[t]||0,r[t]+=30/+n[2],x[t]=x[t]||0,x[t]++}});Object.keys(r).forEach(function(e){r[e]*=x[e]});var s=Object.keys(r).sort(function(e,s){return r[s]-r[e]});e.sort(function(e,r){var s=e.size,a=r.size;return s-a});var a={},t=null;e.forEach(function(e){t=e.size;var r=e.language;/<a/.test(r)&&(r=jQuery(r).text()),a[r]=a[r]||{lang:e.language,user:e.user,size:e.size,link:e.link}});for(var c=0,o=1;c<s.length;c++){var i=jQuery("#author-template").html();r[s[c]]!==r[s[c-1]]&&(o=c+1);i=i.replace("{{PLACE}}",o+'.').replace("{{NAME}}",s[c]).replace("{{SCORE}}",r[s[c]].toFixed(2)),jQuery("#authors").append(jQuery(i))}var u=[];for(var m in a)a.hasOwnProperty(m)&&u.push(a[m]);u.sort(function(e,r){var s=e.lang.replace(/<.*?>/g,"").toLowerCase(),a=r.lang.replace(/<.*?>/g,"").toLowerCase();return s>a?1:a>s?-1:0});for(var l=0;l<u.length;++l){var h=jQuery("#language-template").html(),m=u[l];h=h.replace("{{LANGUAGE}}",m.lang).replace("{{NAME}}",m.user).replace("{{SIZE}}",m.size).replace("{{LINK}}",m.link),h=jQuery(h),jQuery("#languages").append(h)}}var QUESTION_ID=57327,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",OVERRIDE_USER=16294,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}#author-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="author-list"> <h2>Leaderboard</h2> <table class="author-list"> <thead> <tr><td></td><td>Author</td><td>Score</td></tr></thead> <tbody id="authors"> </tbody> </table> </div><div id="language-list"> <h2>Languages</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="author-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{SCORE}}</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>
Nowa (eksperymentalna) wersja wykorzystująca zmodyfikowaną formułę:
function answersUrl(e){return"http://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,r){return"http://api.stackexchange.com/2.2/answers/"+r.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 r=+e.share_link.match(/\d+/);answer_ids.push(r),answers_hash[r]=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=[],r={},x={};answers.forEach(function(s){var a=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(a="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var n=a.match(SCORE_REG);if(n){var t=getAuthorName(s);e.push({user:getAuthorName(s),size:+n[2],language:n[1],link:s.share_link}),r[t]=r[t]||0,r[t]+=30/+n[2]+20,x[t]=x[t]||0,x[t]++}});var s=Object.keys(r).sort(function(e,s){return r[s]-r[e]});e.sort(function(e,r){var s=e.size,a=r.size;return s-a});var a={},t=null;e.forEach(function(e){t=e.size;var r=e.language;/<a/.test(r)&&(r=jQuery(r).text()),a[r]=a[r]||{lang:e.language,user:e.user,size:e.size,link:e.link}});for(var c=0,o=1;c<s.length;c++){var i=jQuery("#author-template").html();r[s[c]]!==r[s[c-1]]&&(o=c+1);i=i.replace("{{PLACE}}",o+'.').replace("{{NAME}}",s[c]).replace("{{SCORE}}",r[s[c]].toFixed(2)),jQuery("#authors").append(jQuery(i))}var u=[];for(var m in a)a.hasOwnProperty(m)&&u.push(a[m]);u.sort(function(e,r){var s=e.lang.replace(/<.*?>/g,"").toLowerCase(),a=r.lang.replace(/<.*?>/g,"").toLowerCase();return s>a?1:a>s?-1:0});for(var l=0;l<u.length;++l){var h=jQuery("#language-template").html(),m=u[l];h=h.replace("{{LANGUAGE}}",m.lang).replace("{{NAME}}",m.user).replace("{{SIZE}}",m.size).replace("{{LINK}}",m.link),h=jQuery(h),jQuery("#languages").append(h)}}var QUESTION_ID=57327,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",OVERRIDE_USER=16294,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}#author-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="author-list"> <h2>Leaderboard</h2> <table class="author-list"> <thead> <tr><td></td><td>Author</td><td>Score</td></tr></thead> <tbody id="authors"> </tbody> </table> </div><div id="language-list"> <h2>Languages</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="author-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{SCORE}}</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>
Aby upewnić się, że Twój fragment został rozpoznany przez fragment kodu, użyj następującego szablonu nagłówka:
# Language, X characters added
Odpowiedzi:
Java, dodano 124 znaki
Póki jest jeszcze miejsce!
Siatka jest teraz
Dokonałem edycji ninja i odwróciłem kod w siatce, ponieważ OP twierdzi, że kod może być wstecz. Następnie zmodernizowałem go do następnej odpowiedzi
źródło
Świnka, dodano 23 znaki
Jeszcze raz przepraszamy za brak jednego wymogu w pytaniu.
oto moje nowe zgłoszenie:
Ustawia zmienną t na spację, a następnie odczytuje co najwyżej 50 znaków ze standardowego wejścia z 20-sekundowym limitem czasu zapisuje nową linię, zmienną, a następnie kolejną nową linię. (Wiele terminali świnki staje się trochę niechlujnych, jeśli tego nie zrobisz ...)
Siatka jest teraz:
to cholerne przesłanie R sprawiło, że napisanie tego było trochę trudniejsze ... :-)
źródło
Beatnik , dodano 29 znaków
Wyjaśnienie nadchodzi :)
Nowa siatka
źródło
C, dodano 27 znaków
Ktoś wspomniał o C i widziałem, że wciąż jest to możliwe.
Nowa siatka:
źródło
??? , Dodano 1 znak
Siatka jest teraz:
źródło
Urna , dodano 3 znaki
Nowa siatka:
źródło
Ruby, dodano 9 znaków
Siatka jest teraz:
źródło
LISP, dodano 3 znaki
Nowa siatka:
źródło
Perl, dodano 6 znaków
Siatka jest teraz:
źródło
Quipu , dodano 3 znaki
Program dla kotów w Quipu składa się z czterech znaków:
Obróciłem o 90 ° i ponownie użyłem jednego z ukośników z programu Rail .
Nowa siatka:
źródło
Cudowny , dodano 7 znaków
(Jeśli dobrze zrozumiałem, jak działa Marbelous ...)
źródło
00\n]]
zrobiłbyś to samo.Pyth, dodano 1 znak
Siatka jest teraz:
źródło
w__t_
Widzę, co tam zrobiłeśPowerShell, dodano 14 znaków
Będę miły i dam ludziom dużo więcej miejsca do oddychania. :)
Siatka jest teraz
źródło
ALGOL 68, dodano 7 znaków
Nowa siatka:
źródło
LOLCODE , 31 dodanych znaków
Po prawej stronie środka obrócono o 90 o . Cieniowana ładnie przeciw
-
,i
d
tam. Pomiędzy tym, plikami Batch i PowerShell, jestem prawie pewien, że nie wygram na podstawie punktów. :-)Siatka jest teraz:
(Poprawiłem także czwarty wiersz od dołu)
źródło
Prolog (SWI), dodano 14 znaków
Czyta pojedynczy znak i wysyła go. W Ideone to działa, ale z wyjściem do stderr. W
swipl
systemie Ubuntu wykonuje następujące czynności:gdzie
X
jest wprowadzony znak i?-
jest monitem. Możesz wyjść z monitu za pomocą Ctrl-D.Nowa siatka (kod odczytuje od góry do dołu, od prawej do lewej w prawym górnym rogu):
źródło
oOo KOD , dodano 1 znak
Nowa siatka:
źródło
Labirynt , dodano 1 znak
Czyta i pisze postać.
Siatka jest teraz
źródło
Belka, dodano 11 znaków
Dodano dodatkową literę H, aby przestała zachowywać się jak program dla kotów.
q
Ii
są ignorowane. Prawdopodobnie mogłem z tym zrobić coś większego, ale wydawało mi się to trochę oszustwem.Siatka jest teraz
źródło
ferNANDo , dodano 31 znaków
Nowa siatka:
źródło
Schemat, dodano 8 znaków
Nowa siatka:
źródło
Bash, dodano 6 znaków
Siatka jest teraz:
źródło
itflabtijtslwi , dodano 5 znaków
Jest to język ///, ale z otoczeniem wprowadzanym przez użytkownika
GG
. Nazywa się to „cokolwiek, co między nimi”. Dlatego to po prostu odzwierciedla pierwszą postać STDIN. (Ponieważ odczytuje tylko 1 znak, nazwa 2 znaków oznacza, że zawsze się zatrzyma po zastąpieniu Oa tym, co wpiszesz)Dodano do lewego górnego rogu pionowo od (w poprzek, w dół) = (0,1) do (0,9)
Nowa siatka:
źródło
GOa
! +1PHP, dodano 24 znaki
Siatka jest teraz:
źródło
var_dump($argv);
. Zamiast tego możesz użyćprint_r($args)
i zapisać 1 bajt.Retina , dodano 1 znak
To jest zasadniczo
cat
.G
aktywuje tryb grep, tzn. program wypisuje każdą linię programu, która pasuje do podanego wyrażenia regularnego. Ale wyrażenie regularne jest puste, więc każda linia jest zgodna, a całe wejście jest drukowane z powrotem do STDOUT.źródło
RunR , dodano 8 znaków
Ostatni na razie
Dodano blisko środka, w dół i trochę w lewo. Nowa siatka to
źródło
Mathematica, 19 znaków dodanych
Nowa siatka:
źródło
Haskell, dodano 16 znaków
Kopiuje standardowe wejście na standardowe wyjście. Kod zaczyna się od linii 15, znak 39.
źródło
Oo! , Dodano 19 znaków
Umieszczony na 24 linii.
źródło
Octave / Matlab, dodano 23 znaki
Czy możemy wprowadzić C? :RE
Siatka jest teraz:
źródło