var QUESTION_ID=191101;
var OVERRIDE_USER=8478;
var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;function answersUrl(d){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+d+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(d,e){return"https://api.stackexchange.com/2.2/answers/"+e.join(";")+"/comments?page="+d+"&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(d){answers.push.apply(answers,d.items),answers_hash=[],answer_ids=[],d.items.forEach(function(e){e.comments=[];var f=+e.share_link.match(/\d+/);answer_ids.push(f),answers_hash[f]=e}),d.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(d){d.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),d.has_more?getComments():more_answers?getAnswers():process()}})}getAnswers();var SCORE_REG=function(){var d=String.raw`h\d`,e=String.raw`\-?\d+\.?\d*`,f=String.raw`[^\n<>]*`,g=String.raw`<s>${f}</s>|<strike>${f}</strike>|<del>${f}</del>`,h=String.raw`[^\n\d<>]*`,j=String.raw`<[^\n<>]+>`;return new RegExp(String.raw`<${d}>`+String.raw`\s*([^\n,]*[^\s,]),.*?`+String.raw`(${e})`+String.raw`(?=`+String.raw`${h}`+String.raw`(?:(?:${g}|${j})${h})*`+String.raw`</${d}>`+String.raw`)`)}(),OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(d){return d.owner.display_name}function process(){var d=[];answers.forEach(function(n){var o=n.body;n.comments.forEach(function(q){OVERRIDE_REG.test(q.body)&&(o="<h1>"+q.body.replace(OVERRIDE_REG,"")+"</h1>")});var p=o.match(SCORE_REG);p&&d.push({user:getAuthorName(n),size:+p[2],language:p[1],link:n.share_link})}),d.sort(function(n,o){var p=n.size,q=o.size;return p-q});var e={},f=1,g=null,h=1;d.forEach(function(n){n.size!=g&&(h=f),g=n.size,++f;var o=jQuery("#answer-template").html();o=o.replace("{{PLACE}}",h+".").replace("{{NAME}}",n.user).replace("{{LANGUAGE}}",n.language).replace("{{SIZE}}",n.size).replace("{{LINK}}",n.link),o=jQuery(o),jQuery("#answers").append(o);var p=n.language;p=jQuery("<i>"+n.language+"</i>").text().toLowerCase(),e[p]=e[p]||{lang:n.language,user:n.user,size:n.size,link:n.link,uniq:p}});var j=[];for(var k in e)e.hasOwnProperty(k)&&j.push(e[k]);j.sort(function(n,o){return n.uniq>o.uniq?1:n.uniq<o.uniq?-1:0});for(var l=0;l<j.length;++l){var m=jQuery("#language-template").html(),k=j[l];m=m.replace("{{LANGUAGE}}",k.lang).replace("{{NAME}}",k.user).replace("{{SIZE}}",k.size).replace("{{LINK}}",k.link),m=jQuery(m),jQuery("#languages").append(m)}}
body{text-align:left!important}#answer-list{padding:10px;float:left}#language-list{padding:10px;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="https://cdn.sstatic.net/Sites/codegolf/primary.css?v=f52df912b654"> <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><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><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody> </table>
b/0 = b
wtedy podzielę obie części dob
tego czasu1/0 = 1
. Czy potrzebujęc
liczb, aby podzielić w ten sposób?b/b = 0
gdy jest normalnie (i jestem prawie pewien, że łatwo to udowodnić na podstawie wszystkich różnych aksjomatów) ma wynosić 1 (w przeciwnym razie odwrotność multiplikatywna b wydaje się nie być odwrotnością multiplikatywną). Jestem prawie pewien, że po prostu nie możesz zrobić luki przeciwko podziałowi przez zero poprzez dodanieb=1/0
lub coś podobnego.0b
zamiast0
? Gdyby te dwa wyrażenia były równoważne, pytanie nie miałoby żadnej przesłanki3.1b/0
Odpowiedzi:
Malbolge Unshackled (wariant rotacji 20 trytów), 3,62e6 bajtów
Rozmiar tej odpowiedzi przekracza maksymalny rozmiar programu do wysłania (eh), więc kod znajduje się w moim repozytorium GitHub (uwaga: nie kopiuj kodu za pomocą CTRL + A i CTRL + C, wystarczy kliknąć prawym przyciskiem myszy i kliknąć „Zapisz element docelowy jako. .. ”).
Jak to uruchomić?
Może to być trudna część, ponieważ naiwny tłumacz Haskell będzie wieków na wieki, aby to uruchomić. TIO ma przyzwoitego interpretera Malbogle Unshackled, ale niestety nie będę mógł go używać (ograniczenia).
Najlepszy, jaki udało mi się znaleźć, to stały wariant szerokości rotacji 20-trytów, który działa bardzo dobrze, obliczając (prawie) natychmiast .
Aby nieco przyspieszyć tłumacza, usunąłem wszystkie kontrole z nieskrępowanego tłumacza Matthiasa Luttera.
To działa!
źródło
PHP ,
65646158 bajtów-1 bajt przy użyciu
b
zamiast''
(pusty ciąg). Ponieważ „b” są przycięte, w tym konkretnym przypadku będzie on taki sam jak pusty ciąg.-3 bajty przy użyciu
substr
zamiastexplode
do uzyskania pierwszej części danych wejściowych.-3 bajty przy użyciu lepszych metod wykrywania
1
i-1
.Wypróbuj online!
Testy: Wypróbuj online!
Jeśli pierwsza część danych wejściowych przed „/” (nazywamy to
$n
) to 0, wypisze 0.W przeciwnym razie drukuje
$n
się z każdym przyciętym na końcu „b” i traktowanymi specjalnymi przypadkami -1 i 1, więc cyfra „1” nie jest drukowana. I na końcu dołącza pojedynczy „b”. Częścią przycinania jest upewnienie się, że nie otrzymujemy podwójnego „b” na końcu, jak „3bb”.źródło
$n==-1
z$n>0
(-2 bajtów) wydaje się działać. Możesz tego spróbować.$n<0
, to też nie będzie działać, ponieważ mamy takie dane wejściowe-8/0
.$n==-1?'-':$n
przez,$n+1?$n:'-'
aby zaoszczędzić 2 bajty!Galaretka , 19 bajtów
Wypróbuj online!
Pełny program
źródło
Galaretka , 18 lat bajtów
Skończyło się na tym, że ukradłem Erika
ṾṖ$İƑ¡
za ten (w przeciwnym razie miałbym również 19) ...Pełny program, który drukuje wynik.
Wypróbuj online! Lub zobacz pakiet testowy .
W jaki sposób?
źródło
v
...: DPerl 6 , 32 bajty
Wypróbuj online!
Kilka regexes, jeden, by sprawdzić, czy wejście jest
0/0
, a drugi do zastąpienia końcowego znaku/0
ze tylkob
(i usunąć staryb
,1
i / lub-1
)Wyjaśnienie (stare)
źródło
Siatkówka ,
2824 bajtówWypróbuj online!
Najpierw spróbuj użyć Retina, więc prawdopodobnie jest sporo miejsca na grę w golfa.
źródło
\b
robi (jestem że niedoświadczony z regex), byłem nieco rozczarowani, że nie może on zostać skrócony do niedrukowanego znak cofania. W każdym razie dzięki\b
jest jedynie reprezentacją ASCII znaku backspace w normalnych ciągach: PPython 3 , 68 bajtów
Wypróbuj online!
źródło
import re
podnosi bajt do 64.Keg , 18 B.
Cały kredyt należy do Jono 2906.
Wyjaśnienie
TIO!
źródło
Wolfram Language (Mathematica) , 37 bajtów
Wypróbuj online!
Pobiera na wejściu listę znaków.
źródło
JavaScript (ES6), 45 bajtów
Wypróbuj online!
Skomentował
źródło
C,
209203137 bajtów-66 bajtów dzięki pułapce cat
TIO
źródło
naz , 64 bajty
Objaśnienie (z
0x
usuniętymi poleceniami)źródło
Brainfuck, 25 bajtów
Wyjaśnienie
źródło
b/0
oczekiwanyb
, dostałbb
;0/0
oczekiwany0
, dostał0b
;-1/0
oczekiwany-b
, rozumiem-1b
./0
zab
i nie bierze pod uwagę żadnego z przypadków na0b
,1b
,-1b
lub wszelkie wejścia, które już zawierająb