¿Me puedes superar? (Sección de policías)


84

Sección de policías

La sección de ladrones se puede encontrar aquí .

Gracias a FryAmTheEggman , Peter Taylor , Nathan Merrill , xnor , Dennis , Laikoni y Mego por sus contribuciones.


Desafío

Su tarea es escribir 2 programas diferentes (programas completos / funciones / etc. ) en el mismo idioma y la misma versión (por ejemplo, Python 3.5 ≠ Python 3.4, por lo que no está permitido), y cuando se le da n (usando argumentos STDIN / function / etc. ), calcule a (n) donde a es una secuencia OEIS de su elección. Uno de esos programas es más corto que el otro. Solo necesita enviar el programa más largo de los dos. El otro debe guardarse en caso de que no se agriete después de 7 días. Su envío se agrieta cuando su programa ha sido superado (ya sea por 1 byte o más).

Por ejemplo, si la tarea que eligió fue realizar 2 × n , este podría ser un envío válido (en Python 2):

Python 2, 16 bytes, puntaje = 15/16 = 0.9375

print(2*input())

Calcula A005843 , (desplazamiento = 0).

Si su envío ha sido descifrado, entonces debe indicarlo en su encabezado así:

Python 2, 16 bytes, puntaje = 15/16 = 0.9375, [agrietado] + enlace

print(2*input())

Calcula A005843 , (desplazamiento = 0).


Compensar

Esto se puede encontrar en cada página OEIS. Por ejemplo, para A005843 , el desplazamiento es 0,2. Solo necesitamos usar el primero, que es 0. Esto significa que la función se define para todos los números ≥ 0.

En otras palabras, la función OEIS (n) comienza con n = 0 . Su programa debe funcionar para todos los casos proporcionados por OEIS.

Más información se puede encontrar aquí .


Puntuación

La puntuación que obtiene por su envío es igual a la siguiente fórmula:

Puntuación = Longitud (en bytes) del código secreto ÷ Longitud (en bytes) del código público

El ejemplo anterior tiene el puntaje 15 ÷ 16 = 0.9375.

La presentación con la puntuación más baja gana. Solo los envíos que hayan publicado su solución serán elegibles para ganar.


Reglas

  • La tarea que debe hacer es una secuencia OEIS de su elección.
  • Dado n , salida OEIS (n) . La desviación no está permitida, por lo que debe producir exactamente la misma secuencia (cuando se le da n, debe generar OEIS (n)).
  • Los envíos que no se descifran dentro de un período de 7 días se consideran seguros después de que se haya publicado la solución (los envíos anteriores a 7 días que no tienen su solución publicada aún son vulnerables a ser descifrados).
  • En su envío, debe publicar lo siguiente: nombre del idioma , recuento de bytes , código completo , por lo que no hay enlaces de pastebin, etc. (para evitar respuestas como Unary), secuencia OEIS , puntaje con longitudes de ambos programas y, además, la codificación que es usado
  • Nota: la misma secuencia no se puede publicar dos veces en el mismo idioma. (Por ejemplo, si la secuencia A005843 se ha realizado en Pyth, no puede usar Pyth nuevamente para esa misma secuencia).
  • La entrada y la salida están en decimal (base 10)

Tabla de clasificación

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>table th,table td{padding: 5px;}th{text-align: left;}.score{text-align: right;}table a{display: block;}.main{float: left;margin-right: 30px;}.main h3,.main div{margin: 5px;}.message{font-style: italic;}#api_error{color: red;font-weight: bold;margin: 5px;}</style> <script>QUESTION_ID=88979;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var byscore=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){jQuery(l[1]).empty();l[0].sort(o);for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]);if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function m(s){if('error_message' in s) jQuery('#api_error').text('API Error: '+s.error_message);}function g(p){jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s){m(s);s.items.map(function(a){var he = jQuery('<div/>').html(a.body).children().first();he.find('strike').text('');var h = he.text();if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b){var c = jQuery('<div/>').html(b.body);return /^cracked/i.test(c.text()) || c.find('a').filter(function(){return /cracked/i.test(jQuery(this).text())}).length > 0}).length == 0)){var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+).*(0.\d+)/.exec(h);var e = [[n++, m ? m[2]-0 : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )];if(/safe/i.test(h)) safe_list.push(e);else uncracked_list.push(e);}});if (s.items.length == 100) g(p + 1);else{var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']];for(var i=0;i<2;i++) u(s[i],byscore);jQuery('#uncracked_by_score').bind('click',function(){u(s[0],byscore);return false});jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false});}}).error(function(e){m(e.responseJSON);});}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"><div id="api_error"></div><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_score">score</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>

Nota

Este desafío está terminado. El ganador final es feersum con su respuesta Semilla . ¡Felicidades! :).

Todavía puedes enviar nuevos policías, pero ten en cuenta que ya no están compitiendo.


2
@Andan Eso parece desafortunado. Digamos que escribo un golf con múltiples trucos inteligentes que mejoran la fórmula obvia. Si publico la fórmula obvia, cualquiera puede encontrar una mejora y ganar. O tengo que inclinar la mano y regalar todas las mejoras menos una. ¿Consideraría cambiar esto si no es demasiado tarde? Perdón por no pensar en esto en este sandbox, solo lo noté cuando intenté el desafío en serio.
xnor

44
@xnor Hmm, eso causaría un gran problema con el mecanismo de puntuación. Luego puede hacer una presentación arbitrariamente grande y una presentación corta casi imposible, y ganar el desafío.
Adnan

3
@Adnan Puede resolver eso definiendo score = len (código secreto) / min {len (código público), len (código más corto publicado por ladrones)}.
Anders Kaseorg

3
@Adnan El contexto es la sugerencia de xnor de hacer que el puntaje cuente si los ladrones superan su puntaje público pero no coinciden con su puntaje secreto. Estoy proponiendo una forma de hacer que eso funcione mientras se evita el problema que le preocupa.
Anders Kaseorg el

3
Sí, finalmente otro desafío de Cooooops y Rooooobbbbbers.
insertusernamehere

Respuestas:


36

Semilla , 5861 bytes, puntaje = 5012/5861 = 0.85

La secuencia es primos ( A000040 ) con desplazamiento 1. a (1) = 2, a (2) = 3, a (3) = 5, etc.

106 4339425277766562922902283581834741289660008085947971671079664775075736459902652798498038280771739790213868067702391567527146683746696872737118568202495046682058807677834082334206717794057290386357040004038910321326390033894692316122893125849512049817771469697446796247656883761642659391998672259889315862253584980121050081936190889196979721443972131545258528161479083569474217100401074866410321578452749003295370495810488337344650619973376676577461877392643228932028285261311284691649403036725905675576380944186859525020321196255472295415627414823269713084816196540461818684672201926996228242729726187404845487167114556965625764494860789841409004737497250600337038738035289643512265772877903971230007222865264200102217827010958702813633039465646713707971175729900391272165457566364779628858903697222589748797809421482136725017988969980267265196209027326008642464190920825439635011414535065156799655809935871795742526416544853103823906918352472744460644939241345215614650110978624804796257165525598653433482592675123776747497586586903140407616610040250976121531777891358439091358523224019193934111409521776865798864774150127996987606796522094617839125169013781373842026970010007574244564780540958252950607459585834584855526028427463655493110963000525209314274839412714497954647707284352161251044088451086878301225167181712809612927720502228546704347274977503482518386819117870800284276687560241308964641752876311905619184965236937789822712948719170589044519552259399272657757694404103028213338440810122219269214268424256451648966039627998513353115348057963135398345514276156595104642595820063441019481255889600472121104059631555738973905087895006671206400595057069658845297458058584470727379036742268107372233190371861824194831387484478317333784774872796689435056263039565495723444232483369405079512770383639748492508848098080619713255928884946598796741958520788406091704951276729428229224292748702301286318784744573918534142896761450194446126776354892827260482520089107240497527796383449573487121759294618654056309957794765646022274249211113876873102681817500947681708211056388348991201016699342850495527766741633390367735662514559206616070479934780700857859919517187362382258597709910134111383911258731633002354208155277838257255571878219168563173495861133946240923601273185050088148273459064040178741322137494758164795598458780786653602794809987537740537018415433767449108362051063814315399931951925462073202072886716208053889630274798247936580024665863765351912184189125660586187615847325588786048095120241198943086897428919324650596915625795076460123743259068671341944912206659194476673792489442514470540309819938731582497982088632076086088279435186513066668502875362808653657423813387124496122632219269226944975782747969308509448942429277233562654639293567532567668357917753810024961683829653277391094269518376510962710057956994339018307344554672056556222387849272880157861877494719706801624724491116189525394408237355854147113614645956561900837121715298276123085019204014577395795131906357190097536924932784935203378709529040555114884933996346694363879974847691625806412083107877442577777402405491226347699452398189866905599648314105255526411599513768016126067224570735746339691839657336828937030584950250402550603260483421505256395736457980708347396132620971927806636308105501893575073944959824958733880580825249931469481777083600987966500968473202481877213198175820182125298036242272662171321630056435823478710070315022531849275633515412140708923196338877549535352180465031450246889723670908173572778497329815806296369714467774385173078365517895215622645081749679859298824530173433952201710212962315524645807786760255396609101229899503687886977229729747349967302227815724222900649259120496955396616388023947812556426182596252076072286860171961582235043470190275528327438941205680729222092142315348205283459886659277456757338926863444370956987436702675569004062857510888080701482282900718067707825890168959050535970636214821273965900140346587802750221148933877600652180282267212515086387728695565345543441575183083490091817551421389124038251086513387106526847199935776240422217886407416027185332010280169564289345500368555274327733580514983967396271907637608170801013991375555069570288329399237332712790289521766624379537848996471168926519414464863388365890585061582441222989105844636887033599262856636618609644981203616618819656730174147506366895579518927217154437260067784133452192099436160162797896733220282837763342940047719962882720310397266700665603774047807673735452896542215047419894928360985667680051383584281780118001522220147385455276205847620842066894760474814386271419398361771509559702341442734727141312211989794380570433135781896005067541537095546614638001539678780066976441749790924521292297473522803115912791790379839635473194794843511234906415092857115568242448079933264380632375450234146479596225552359821776361923588178896354011117990551249184457345201223244319766597339520899930287542362386381372955844126876031262062731835081542890548095759704856479235361996156162229417953890962902505112862674541020677153054937034038823204321411753183982406667628845943390275194956321260584953509501973880059966268311741789559039618821364775407403947492157311255310143283125490988585303127442698159113924719563571459841025286208880511134222538431747221840824203312684036627017414295981003169360893015436564680773233890198618904647085929678054127680367983802905553144716598061593632352021737488422700265144189474970515439967472618438343180405852959047054139020095303915498443045344690691354304662161461750826840689185141612937350984288238847592910919431788170821390987459951181698659544772214696392241600642992000900364649438402093845534643663733216626212187314397293309505677932731383013397665193960914949915855970134736764497124186701371371881061763702617034928084811708964018610410971938419410791443362686750151572343348438861493025667676713

Los programas Befunge-98 fueron probados con este intérprete .

Solución:

62 92671758747582594731336103958852355343308794409787718910287760272065096600068486400261521203099179296478278113800406388237579729434074471528101978922110199511009255327569364221068648720732186414156697930516237153253745234146558781777104311285708042469572129997820696177040412749585193035961972308024909384538547357820271391461203855177879703963391294547499579588457829374981409596253284387318191154655397249791533591896711203680125312645807793061567274893660125978667479654664977040722935418267606762108334976561590548772755653088127344268269983549959628254712562135604114391709222466418283973346968039685907258341712475120187026707300070769277380483828579629391533415119380882514570806683534933872011332303802477012040660361613689139008855327957705058672774790021218679288003003953301651226513713984857174365383390364296326192225244927665294515693697694918935732394438095829822147927645949273829493190176397786165741955566462476231578299385726525505407052332068778469428870102672560545990553686935179657522071350801304923521681690806124866463401094200444841941834667455137491597902735287855498886460945851544063102556545691787612423033525861765804657417395955322217721677429700032333887700477665924915189639029356029794151144702621112140447347270986003871777552705154393697526621456025974679633450745341583481291685834000335168972075093212539251102818038917942913311300883294570091156661153874804268309393591292001433191276766990017144340677002050765359295580546228905861008474333888247511333039470305173620221481374758754343560048199433044290376988914313248904786418615239832295700238599693805552407166251501198275363727855984193340187485162706203747898935844148656997727555488455764358003951396850496841760348138874901474547533715922587211143833052692993182786162665394965914056238514702648647904702501871758140636318131208564891924287008550289224318358936576352473100482724524675417108540029486047223784009872784235439805791496176981701859374772960623187174667015174831665360382067784289660747175586412802848517818731070091826086320292632019033525579172665790335268736167170506003176022610987557889205903933680970434653929602313812168432779881423599218075810156457004870273456214668951969634696002866863369645150677406566613367576078149751561615160777945725724620047443832859087000460506626402089973036918592151204779260519899343451226942874643654023265001514280212345984966126290887141500898797940093805650642580450926977375576911590855135774911449619005627413806680159169643085790457809525639117624947749945044091079624534522626841372604654172723500062361904864176709974716350878399949908529715899937417421315012456868864220900338162700464737416505300734198857624165994112815507157337074226022552948626042899845891195024145834980781844015548398775284084741665926642729256313545870065439195137107807599897817556866239630270351410298105991743248934632486671734759038305157913444368204353943206369388913837519310828223093441519335111533635957953613758894822654736600526811789875376813119426924959017038654104216784121093688306563643326587639486472221258233221666454164763738631579246841130247019172136121041002571694545781948282785399495873501148416357057693713305042834246973535325571882393889489457235864027134943913383832461393499203435931881991959787045205816313165984531168137210464591653390767999403651750434079431253272021002273680565508340556736474927770564408343360602057949991306130979603289667991356237787412616305022971197507815004141825394838946364485315703051195195566893733123391158803413838803831010122718476800229685100410524315094662633390222854924884579083098055980542607258318868514903610787510921796157291630993618714015755412239872758443166948699744841899868754369627081727143351807615097715679652005998467491609044596871312950634152039807480021814406950780706131231897491212637759991818212542181136384052857191779658528790835620632765143337026858373660057972387266312097135260115742458792764792668883627539340807572869610941154184473111399152964165437112713815173281951728792354570851956468302291939952274005357250989986640723863408051924618400882866539701190471828299028566020683682444415198672952980294639217217840535225987439355834087974716313911977302809235338769491339553247328065401203243450045946392960085318343121705830317674151229536850726617093615850507955559652374337057819549481320081981520577039493601331233500403284295119207704095876958023271178964331413629547646937335760969491450824461526563643617594783473684358594189269252499897162333533284912320654686655888508024970105099967896167541978181602786701854274646885561632089896312016789257459673121974866871919820865433343707787147414982407950775979279255414469970743690769124215210050618943726165676550098723299244096267839544684847323547847832349290874282817429866612456451105673214159820212156069771415582214200701894487126822756864305461967035982308878073752362075553218935807632264803200753661147341613284071218919438723527468202903770806766095252957940538229987302177328543423522712562396242285027178395886649344

8
Esto tomaría siglos para descifrar o_____O
TuxCrafting

44
El lenguaje correcto para el desafío
DLosc

26

Jalea , 5 bytes , puntaje 0.8 (4/5) [ ¡agrietado! ]

R²Sƽ

Calcula A127721 .

Pruébalo en línea!


Aquí está la solución:

RÆḊḞ
  • tomar entrada implícitamente n
  • R: lista de [1, 2, ..., n]
  • ÆḊ: ¡En nuestro caso, esto en realidad devolverá la raíz cuadrada de la suma de los cuadrados (que puede ser útil en futuros juegos de golf)!
  • : piso el resultado.

La documentación para ÆḊlecturas:

ÆḊ: Determinante, extendido a matrices no cuadradas.

La clave se extiende a matrices no cuadradas . El "determinante" de una matriz no cuadrada generalmente no está definido, pero una definición razonable es sqrt(det(A A^T))(que para una matriz cuadrada se reduce a |det(A)|). En nuestro caso, A A^Tes una matriz 1 x 1 que contiene la suma de los cuadrados. ¡La raíz cuadrada del determinante de eso nos da exactamente lo que necesitamos para eliminar el último byte!


44
¡Bienvenido a Programming Puzzles y Code Golf!
Adnan

2
Solo por curiosidad, ¿es esto realmente posible en 4 bytes? He estado atrapado en esto por horas: p.
Adnan

1
@Adnan, sí, es posible. Me alegra saber que te resulta difícil.
George V. Williams


@ jimmy23013, sí, muy bien hecho!
George V. Williams

12

Retina , 28 bytes, puntuación = 0.9286 ... (26/28), agrietada por feersum

.+
$*
^$|^((^|\3)(^.|\1))*.$

Calcula A192687 , (desplazamiento = 0).

Pruébalo en línea! (La primera línea habilita un conjunto de pruebas separado por salto de línea).

Esta es la diferencia entre las secuencias masculinas y femeninas de Hofstadter . ( Desafío PPCG relevante ) .

Este fue mi código original:

.+
$*
^((^.|\3)(\1)|){2,}$

De todos modos, esta respuesta fue un poco arriesgada, porque la solución real se basa en una expresión regular que anuncié como la expresión regular de prueba de Fibonacci más corta conocida en el chat hace unos meses. Afortunadamente, nadie parecía recordar eso. :)



11

Hexagonía , 91 bytes, Puntuación = 0.725274725 (66/91) [Agrietado]

Calcula A000045 (secuencia de Fibonacci, desplazamiento 0).

No me sorprendería demasiado si alguien logra vencer esto y mi versión más golf , aunque debería ser difícil.

Editar: Santa vaca, @MartinEnder me azotó con una solución de 33 bytes.

Golfizado (91):

?\]~<~.{>'"/(@{\''1<{!1>{{1}/}{'\1</={}/_\'0"/>+(}\/}(+'+'%=<>=%"=+("\/+"(+}+<>{{}=~\.....|

Formateado:

      ? \ ] ~ < ~
     . { > ' " / (
    @ { \ ' ' 1 < {
   ! 1 > { { 1 } / }
  { ' \ 1 < / = { } /
 _ \ ' 0 " / > + ( } \
  / } ( + ' + ' % = <
   > = % " = + ( " \
    / + " ( + } + <
     > { { } = ~ \
      . . . . . |

Pruébalo en línea!

No voy a publicar una explicación para esto, es demasiado horrible ...

Golfizado (66):

?{1}]0@._.>\>+{./'++.!.|.*'}..\}{\=++.../'"<_}\"+<./{(/\=*"=/>{=+"

Formateado:

      ? { 1 } ] 0
     @ . _ . > \ >
    + { . / ' + + .
   ! . | . * ' } . .
  \ } { \ = + + . . .
 / ' " < _ } \ " + < .
  / { ( / \ = * " = /
   > { = + " . . . .
    . . . . . . . .
     . . . . . . .
      . . . . . .

De colores:

secuencia Fibonacci

Pruébalo en línea!

Explicación:

El diseño de memoria que utilicé se parece un poco a esto:

   |
   a
   |
  / \
b+a  b
/     \
      |
    input

La inicialización (en negro) establece a = 0 yb = 1. Luego, el bucle principal:

  • va de aa la celda de entrada -'"
  • disminuye la entrada - (
  • agrega by a - {{=+
  • lo mueve "fuera del camino" - "+{=*
  • establece a a b - '+
  • mueve un "fuera del camino" - '+}=*
  • mueve b + a a su posición original - "=+
  • establece b a b + a - "+
  • mueve la espalda a su posición original }+

Una vez que la celda de entrada alcanza 0, el MP se mueve a a, imprime y sale.

Lo que podría haber hecho para guardar más bytes es usar &, que simplemente establece la celda actual en su vecino izquierdo o derecho. También podría haber tenido un mejor control de flujo, pero está bien como está.


Agrietado. Gracias por hacerme escribir un programa de Fibonacci. No estoy seguro de por qué no he hecho eso antes. :)
Martin Ender

En realidad, lo que estoy usando &es mover la entrada alrededor de los bordes a / b / a + b para que intercambien sus roles en la próxima iteración. De esa manera, no necesito mover a, by a + b para nada.
Martin Ender

@MartinEnder Lo siento, escribí esa parte antes de ver lo que realmente hizo su programa. Su solución es mucho más inteligente
azul el

10

M , 10 bytes , puntaje 0.6 (6/10) [ agrietado ]

R‘ạḤc’*@RP

Un poco tramposo ya que M y Jelly son bastante similares, pero están permitidas por las reglas. Esta versión se basa en el crack de @ LeakyNun a mi respuesta de Jelly.

Esto calcula la secuencia A068943 . Pruébalo en línea!

Solución prevista

El siguiente código funciona en M / Jelly.

R¹¡PÐL

De hecho, tenía una solución de 4 bytes a la que agregué un poco de pelusa para que pareciera más difícil de descifrar usando la fuerza bruta.

R¡FP

Pruébalo en línea!

Este es el que voy a explicar.

R¡FP  Main link. Argument: n

 ¡    Execute the left to the left n times, updating the return value.
R       Range; map each integer k to [1, ..., k].
      This does the following for the first values of n.
        1 → [1]
        2 → [1,2]   → [[1],[1,2]]
        3 → [1,2,3] → [[1],[1,2],[1,2,3]] → [[[1]],[[1],[1,2]],[[1],[1,2],[1,2,3]]]
  F   Flatten the resulting, nested array.
   P  Take the product of the reulting array of integers.

¡Agrietado! ¡Fue divertido!
millas

10

Pila de gatos , 14 bytes, puntuación = 13/14 = 0.929 [ agrietada ]

Eso es 10 bytes de código, más 4 para los argumentos -nm.

Calcula A017053 . En caso de que OEIS esté inactivo, eso es a(n) = 7n + 6, comenzando en n = 0.

![_-_:-_-_

El código completo (utilizable sin -margumento) es![_-_:-_-_-_-:_-_]!

La solución oculta fue

!]|{_+:}_




6

Brachylog , 27 bytes, puntaje = 0.666 ... (18/27), ¡Agrietado!

+ybL:L:[1]co~c[A:B]hl-?,A*.

Calcula A010551 (desplazamiento = 0).

Puedes probarlo en línea aquí .

Explicación

Como la gran mayoría de las personas no conocen este idioma, y ​​dado que publico esta respuesta principalmente para que la gente lo vea (ver: Wiki Brachylog ), proporcionaré una breve explicación del código anterior:

+           Add 1 to the input N
ybL         L = [1, 2, ..., N+1]
:L:[1]c     Construct a list [1, 2, ..., N+1, 1, 2, ..., N+1, 1]
o           Sort the list from smallest to biggest
~c[A:B]     A concatenated to B results in that sorted list
hl-?,       The length of A is N + 1
A*.         The output is the result of the product of all elements of A



6

Java 7, 53 bytes, puntaje = 0.9623 (51/53) Agrietado

int f(int n){return n<1?3:n<2?0:n<3?2:f(n-2)+f(n-3);}

Calcula la secuencia de Perrin, A001608

f(0)=3
f(1)=0
f(2)=2
f(n)=f(n-2)+f(n-3)

Primer intento de código de golf, siéntase libre de señalar cualquier error.

Explicación después de la fisuración:

millas acortaron los primeros tres valores (0,1,2) -> (3,0,2) a

n<2?3-3*n:n<3?2

mientras que mi propia solución fue un poco sobre-diseñado

n<3?(n+4)%5*2%5

Combinando los dos trucos, obtienes

n<3?3-3*n%5

para un byte de 47

int k(int n){return n<3?3-3*n%5:f(n-2)+f(n-3);}

que se ve bastante compacto para Java :)



5

Cheddar, 7 bytes, puntaje = 0.8571 (6/7), [agrietado]

n->2**n

Bastante simple, solo los poderes de dos. OEIS A000079

Pruébalo en línea!


2
Uh, los creadores de idiomas tienen una ventaja aquí ...
Dennis

10
Especialmente creadores de idiomas cuyos idiomas carecen de documentación.
Mego


2
@Mego ¿el código de autodocumentación no se considera documentación? ¡Los revisores del código me mintieron! D: <
Downgoat

1
@Downgoat Cuando tienes un enlace en tu sitio web llamado "Documentación" y está lamentablemente incompleto ... Sí.
Mego


4

Python 2, 43 bytes, puntaje = 0.9302 (40/43), agrietado

f=lambda n:n==1or-(-sum(map(f,range(n)))/3)

Calcula A072493

Veamos si alguien puede jugar golf en los 3 bytes.


Espera, ¿está realmente bien si Truese usa para representar 1?
R. Kap


s=1;exec"a=-(-s/3);s+=a;"*input();print apor 41.
orlp

@ R.Kap sí, lo es. Cualquier valor que sea verdadero ( if xes verdadero) es un retorno válido.
Rɪᴋᴇʀ

4

Pyke, 11 bytes, puntaje = 0.45 (5/11) [agrietado]

hZRVoeX*oe+

Calcula OEIS A180255

Pruébalo aquí!


1
Quería probar esto, pero la documentación del idioma no es muy esclarecedora. (por ejemplo, Zestá documentado; el idioma afirma estar basado apilar pero después de la *hay sólo ceros en la pila a pesar de tener un efecto sobre el resto del código; orden de los parámetros no se especifica claramente)
Score_Under

1
@Score_Under ¿qué puedo hacer para mejorarlo? - Perfectamente feliz de discutir en una sala de chat sobre lo que no está claro
Azul

Seguro. No sé cómo iniciar un chat, pero he editado mi comentario anterior con algunos ejemplos: pensé que podría hacerlo antes de que lo
leyeras






3

Sesos , 14 bytes, puntaje = 0.8571 (12/14) ( agrietado )

0000000: 16f8be 760e1e 7c5f3b 07ddc7 ce3f                  ...v..|_;....?

Calcula A000290 .

Pruébalo en línea!

Consejos

Este archivo binario ha sido generado por el siguiente ensamblador:

set numin
set numout
get
jmp,sub 1,fwd 1,add 1,fwd 1,add 1,rwd 2,jnz
fwd 1
jmp
  sub 1,fwd 1
  jmp,sub 1,fwd 1,add 1,fwd 1,add 1,rwd 2,jnz
  fwd 1
  jmp,sub 1,rwd 1,add 1,fwd 1,jnz
  rwd 2
jnz
fwd 3
put


3

MATL , 11 bytes, puntaje = 0.8181 (9/11), agrietado

YftdA-1bn^*

Calcula la función de Möbius , o A087811 (desplazamiento 1).

Pruébalo en línea!

Recursos para ladrones

Creo que este debería ser fácil, pero de todos modos aquí hay algo de ayuda.

Explicación del código:

Yf     % Implicit input. Push array of prime factors, with repetitions
t      % Duplicate
d      % Compute consecutive differences
A      % 1 if all those differences are nonzero, 0 otherwise
-1     % Push -1
b      % Bubble up array of prime factors to the top of the stack
n      % Number of elements
^      % -1 raised to that
*      % Multiply. Implicitly display

Documentación de idioma .

Sala de chat MATL .



@feersum ¡Bien hecho! Como referencia, la versión de 9 bytes fueYftdA_wn^
Luis Mendo, el


3

MarioLANG , 87 bytes, puntaje = 0.839 (73/87), agrietado

;
)-)+(< >>
-)===" ""====
>>+([!)( >-(+(
"====#[(("== [
!-) - <!!![)<<)
#======###====:

Calcula A000217 , los números triangulares. Offset 0.

Pruébalo en línea!

Solución corta:

Dado que el crack solo tomó 1 byte, compartiré mi solución en 73 bytes, que usa un algoritmo completamente diferente:

;   +)-<
-   (=="
+)-<(
(=="+
> [!>)[!(
"==#===#[
!    -  <))
#=========:

Pruébalo en línea!

El primer programa presenta todos los números de n a 1 a lo largo de la cinta, luego suma todos los números hasta que se encuentra con una celda de valor 0. Lo hace copiando cada celda en las dos celdas adyacentes, decrementando la copia correcta y repitiendo el proceso hasta llegar a 0. Durante este proceso, la cinta se ve así (para n = 5):

0 0 5 0 0 0 0
0 5 0 5 0 0 0
0 5 0 4 0 0 0
0 5 4 0 4 0 0
0 5 4 0 3 0 0
0 5 4 3 0 3 0
0 5 4 3 0 2 0
0 5 4 3 2 0 2

... y así. Luego se mueve hacia la izquierda, sumando las celdas hasta llegar a una celda con 0.

El segundo programa solo funciona con tres celdas de la cinta. Hasta que la primera celda llegue a 0, hace lo siguiente:

  • Mueva el valor de la primera celda a la segunda celda.
  • Disminuya la segunda celda a 0, agregando su propio valor a la primera y tercera celda.
  • Disminuye la primera celda.

Después de que la primera celda llegue a 0, la tercera celda contendrá n + (n-1) + (n-2) + ... + 2 + 1.


¿Su versión de 87 bytes funciona en otro intérprete? El de Tio! parece requerir una nueva línea final ...
Dennis

@ Dennis: funciona en el intérprete de Ruby sin la nueva línea. Por alguna razón, el intérprete en TIO no saldrá de a :si está en la línea de fondo, por lo que incluí la nueva línea final en el enlace. Martin y yo discutimos esto en otra de mis respuestas de MarioLANG.
Business Cat

OK, solo revisando. ¡Agregué un contenedor para Tio! que agrega una nueva línea al código fuente.
Dennis



3

Haskell, 28 bytes, puntaje = 0.3571 (28/10), agrietado

f n|odd n=1|1>0=2*f(div n 2)

A006519 , la potencia más alta de 2 divisiones n, comenzando en n=1.

1, 2, 1, 4, 1, 2, 1, 8, 1, 2, 1, 4, 1, 2, 1, 16, 1, ...

Si bien obtienes crédito por descifrar cualquier código más corto, considero que el verdadero acertijo se reduce a 10 bytes.



@nimi Felicidades, lo tienes.
xnor






Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.