Spróbuj napisać kod w swoim języku i spraw, aby nie spełniał już naszych kryteriów bycia językiem programowania .
Język spełnia nasze kryteria (uproszczona wersja tego wyzwania) bycia językiem programowania, jeżeli:
- Może w jakiś sposób odczytać dane wejściowe użytkownika reprezentujące krotki dodatnich liczb całkowitych.
- Może generować co najmniej dwa różne możliwe wyniki w zależności od danych wejściowych.
- Może to zająć dwie dodatnie liczby całkowite i dodać je (a wynik może wpłynąć na wynik).
- Może przyjmować dodatnią liczbę całkowitą i decydować, czy jest liczbą pierwszą (a wynik może wpływać na wynik).
- Na potrzeby tego wyzwania, każdy rodzaj wyniku, który nie jest dozwoloną metodą wyjścia dla normalnego wyzwania, jest ignorowany. Nie ma zatem znaczenia, czy program może również odtwarzać utwór muzyczny, czy publikować przez HTTP itp.
- Aktualizacja: Możesz także wybrać jedną lub kilka dozwolonych metod wyjściowych i zignorować wszystkie pozostałe. Musisz jednak wszędzie używać tej samej definicji w następujących kryteriach. A jeśli twój program może wyłączyć więcej niż jedną metodę wyjściową - jest to warte więcej głosów pozytywnych.
Przykłady takie jak uniemożliwianie wyjścia lub wyłączanie wszystkich konstrukcji pętli, aby nie mógł wykonać testu pierwotności i upewnienie się, że użytkownik nie będzie mógł ich ponownie włączyć.
Powinieneś zostawić miejsce na wstawienie nowego kodu. Domyślnie jest na końcu kodu. Jeśli rozważymy umieszczenie kodu źródłowego w tym miejscu w odpowiedzi i uruchomienie pełnego kodu jako kompletnego programu interpretera nowego języka, język ten nie powinien spełniać kryteriów.
Ale wstawiony kod musi zostać wykonany w taki sposób, aby spełniał kryteria:
- Wstawiony kod musi być gramatycznie taki sam jak coś (powiedzmy, że jest to blok kodu w poniższych kryteriach), który ogólnie spełnia kryteria, z perspektywy tego, kto chce napisać wyróżnienie składni. Więc nie może być w ciągu, komentarzu itp.
- Wstawiony kod musi zostać faktycznie wykonany, tak aby spełniał kryteria. Dlatego nie może być w nieużywanej funkcji ani
sizeof
w C, nie można po prostu wykonać tylko niefunkcjonalnej części kodu i nie można umieścić go po nieskończonej pętli itp. - Nie można ograniczyć liczby możliwych poprawnych gramatycznie programów wygenerowanych w ten sposób. Jeśli istnieje już ograniczenie długości w używanym języku, nie powinno ono spełniać kryteriów, nawet jeśli limit ten zostanie usunięty.
- Nie możesz modyfikować ani „wykorzystywać” treści wejścia / wyjścia, ale możesz uniemożliwić dostęp do nich.
- Te kryteria zwykle dotyczą tylko języków bez wyraźnego We / Wy:
- Twój kod powinien przekierować dane wejściowe użytkownika (zawierające informacje o dowolnej długości) na wstawiony kod, jeśli blok kodu zwykle nie jest w stanie uzyskać danych wejściowych użytkownika bezpośrednio / jawnie w języku, którego używasz.
- Twój kod powinien wydrukować zwróconą wartość wstawionego kodu, jeśli blok kodu zwykle nie jest w stanie wyprowadzić rzeczy bezpośrednio / jawnie w języku, którego używasz.
- W przypadku wydrukowania zwróconej wartości, która jest wpisana w używanym języku, zwracany typ powinien mieć 2 różne praktycznie możliwe wartości. Na przykład nie można użyć tego typu
struct {}
lubstruct {private:int x;}
w C ++.
To konkurs popularności. Wygrana jest najwyższa poprawna odpowiedź (więc nikt nie zauważył błędu lub wszystkie błędy zostały naprawione).
Wyjaśnienia
- Nie należy modyfikować kodu w formie tekstowej, ale można zmienić składnię przed interpretacją lub kompilacją kodu.
- Podczas działania kodu możesz wykonywać inne czynności. Ale powodem, dla którego nie spełnia kryteriów, powinien być sam wstawiony kod. Może powodować błędy z powodu interferencji innego wątku, ale nie tylko zostać zabity przez inny wątek.
- Wszystkie specyfikacje w zasadzie oznaczają, że gramatycznie powinno spełniać kryteria, jeśli wszystkie wbudowane elementy nie zostały zmienione, ale w rzeczywistości tak nie są. Nie ma problemu, jeśli znajdziesz jakieś nie gramatyczne obejścia, takie jak prawidłowe przekazywanie parametrów do bloku kodu, ale uniemożliwiają ich użycie w jakiś sposób.
- Ponownie wstawiony kod musi zostać faktycznie wykonany. Kod po nieskończonej pętli lub awarii jest uważany za „faktycznie nie wykonany”, dlatego nie jest prawidłowy . Te odpowiedzi mogą być interesujące, ale na tej stronie jest już kilka nieskończonych pętli lub zawieszających się pytań i możesz znaleźć bardziej odpowiednią odpowiedź. Jeśli nie, rozważ zadanie nowego pytania. Przykładami tych pytań są:
Tabela liderów
var QUESTION_ID=61115/*,OVERRIDE_USER=8478*/;function answersUrl(e){return"https://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,s){return"https://api.stackexchange.com/2.2/answers/"+s.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 s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,/*getComments()*/(more_answers?getAnswers():process())}})}/*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=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),score:s.score,language:a[1],lang:jQuery('<div>').html(a[1]).text(),link:s.share_link})}),e.sort(function(e,s){var r=e.score,a=s.score;return a-r});var s={},r=1,a=null,n=1;e.forEach(function(e){e.score!=a&&(n=r),a=e.score,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",e.n=n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.score).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text())/*,s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}*/});var t=e/*[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o])*/;t.sort(function(e,s){return (e.lang.toUpperCase()>s.lang.toUpperCase())-(e.lang.toUpperCase()<s.lang.toUpperCase())||(e.lang>s.lang)-(e.lang<s.lang)});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{PLACE}}",o.n).replace("{{LANGUAGE}}",o.language).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.score).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<(?:h\d|(?!.*<h\d>)p)>\s*((?:[^,;(\s]| +[^-,;(\s])+)(?=(?: *(?:[,;(]| -).*?)?\s*<\/(h\d|p)>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;float:left}table{width:250px}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="https://cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Score</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Sorted by Language</h2> <table class="language-list"> <thead> <tr><td></td><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>{{PLACE}}</td><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>