var QUESTION_ID=67431,OVERRIDE_USER=31729;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,s){return"http://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()}})}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),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).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=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).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>\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}#answer-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="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>
Respuestas:
Pyth,
2322 bytesEjecuta 10000 iteraciones. El número se puede cambiar sin costo de byte. La entrada está separada por una nueva línea. Toma alrededor de 9 segundos en mi computadora.
Demostración
fuente
MATL , 44
46bytesUtiliza la versión 3.1.0 del lenguaje, que es anterior a este desafío.
El cálculo se realiza con un bucle que dibuja 1000 realizaciones aleatorias. Tarda un par de segundos en ejecutarse. Se podría hacer más rápido de forma vectorizada. La entrada es de la forma
[N M].Versión anterior : genera un mazo de cartas al azar y lo verifica dos veces: primero en adelante y luego en retroceso.
Nueva versión : genera un mazo de cartas al azar y luego agrega una versión invertida con un
0intermedio. De esa manera, la verificación se puede hacer solo una vez, en la dirección hacia adelante. Esto ahorra dos bytes.Ejemplo
Explicación
fuente
LabVIEW, 58 primitivas de LabVIEW
crea matrices de cartas y luego las baraja. Busque 1s y luego verifique las tarjetas adyacentes por 2s.
fuente
Pyth, 16 bytes
Demostración.
Esto sigue el
estrategia de programación. La suposición educada ganadora en este caso es
lo que más o menos dice que hay
Nposibilidades de caer en cubos, y la fracción de cubos válidos es2 / M. Los cubos son ranuras ubicadas al lado de0s, y las posibilidades son1s.El error nunca parece superar el 3% (sorprendentemente), y parece converger al 0% a medida que los parámetros se hacen más grandes (como era de esperar).
La entrada está separada por una nueva línea.
Puede guardar un personaje si acepta el hecho claramente obvio de eso
False == 0, y lo hace en suJE&>J1-1^-1c2JQlugar.fuente
MATL ,
4438 bytesEsto también usa MATL versión 3.1.0 , que es anterior a este desafío.
Nueva versión, gracias a Luis Mendo por guardar 4 bytes.
Versión anterior (44 bytes):
Explicación
Por ejemplo,
Nota (21/5/16): a partir de la versión 18.0.0 de MATL,
X+se ha eliminado, peroY+se puede utilizar en su lugar. Los cambios desde la versión 3.1.0 a MAT 18.0.0 media que esta respuesta se puede escribir en sólo 31 bytes,*xO1e4:"2:Gtb*Z@w\TT2&Y+1=ah]Ym.fuente
[1 1]enTTo. Además, no necesitas la comaMathematica,
939291 bytesTodavía buscando una forma cerrada ...
fuente