Puoi superarmi? (Sezione poliziotti)


84

Sezione poliziotti

La sezione dei ladri è disponibile qui .

Grazie a FryAmTheEggman , Peter Taylor , Nathan Merrill , xnor , Dennis , Laikoni e Mego per il loro contributo.


Sfida

Il tuo compito è quello di scrivere 2 programmi diversi (programmi completi / funzioni / ecc. ) Nella stessa lingua e nella stessa versione (ad es. Python 3.5 ≠ Python 3.4, in modo che non sia consentito), e quando viene dato n (usando STDIN / argomenti della funzione / ecc. ), calcola a (n) dove a è una sequenza OEIS di tua scelta. Uno di questi programmi è più breve dell'altro. Devi solo inviare il programma più lungo dei due. L'altro deve essere salvato in caso di non essere rotto dopo 7 giorni. Il tuo invio viene decifrato quando il tuo programma è stato superato (sia di 1 byte o più).

Ad esempio, se l'attività scelta era di eseguire 2 × n , questa potrebbe essere una presentazione valida (in Python 2):

Python 2, 16 byte, punteggio = 15/16 = 0,9375

print(2*input())

Calcola A005843 , (offset = 0).

Se la tua richiesta è stata decifrata, devi dichiararla in questo modo in questo modo:

Python 2, 16 byte, punteggio = 15/16 = 0,9375, [crackato] + collegamento

print(2*input())

Calcola A005843 , (offset = 0).


Compensare

Questo può essere trovato su ogni pagina OEIS. Ad esempio, per A005843 , l'offset è 0,2. Dobbiamo solo usare il primo, che è 0. Ciò significa che la funzione è definita per tutti i numeri ≥ 0.

In altre parole, la funzione OEIS (n) inizia con n = 0 . Il tuo programma deve funzionare per tutti i casi forniti da OEIS.

Ulteriori informazioni possono essere trovate qui .


punteggio

Il punteggio ottenuto per l'invio è uguale alla seguente formula:

Punteggio = Lunghezza (in byte) del codice segreto ÷ Lunghezza (in byte) del codice pubblico

L'esempio sopra ha il punteggio 15 ÷ 16 = 0,9375.

Vince l'invio con il punteggio più basso . Solo gli invii che hanno pubblicato la loro soluzione potranno vincere.


Regole

  • Il compito che devi fare è una sequenza OEIS a tua scelta.
  • Dato n , output OEIS (n) . La deviazione non è consentita, quindi è necessario produrre la stessa sequenza esatta (quando viene dato n, è necessario generare OEIS (n)).
  • Gli invii che non vengono risolti entro un periodo di 7 giorni vengono considerati sicuri dopo che la soluzione è stata pubblicata (gli invii più vecchi di 7 giorni in cui non è stata pubblicata la soluzione sono ancora vulnerabili al cracking).
  • Nel tuo invio, devi pubblicare le seguenti cose: nome della lingua , numero di byte , codice completo , quindi nessun link pastebin ecc. (Per impedire risposte come Unary), sequenza OEIS , punteggio con lunghezze di entrambi i programmi e, inoltre, la codifica che viene utilizzato.
  • Nota: la stessa sequenza non può essere pubblicata due volte nella stessa lingua. (Ad esempio, se la sequenza A005843 è stata eseguita in Pyth, non è possibile utilizzare nuovamente Pyth per quella stessa sequenza.)
  • Input e output sono entrambi in decimale (base 10)

Classifica

<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

Questa sfida è finita. Il vincitore finale è feersum con la sua risposta Seed . Congratulazioni! :).

Puoi comunque inviare nuovi poliziotti, ma tieni presente che non sono più in competizione.


2
@Andan Sembra sfortunato. Supponiamo che scriva un golf con molteplici trucchi intelligenti che migliorano la formula ovvia. Se inserisco la formula ovvia, chiunque può trovare un miglioramento e vincere. Oppure, devo dare la mano e dare via tutti i miglioramenti tranne uno. Considereresti di cambiarlo, se non è troppo tardi? Scusa se non ci penso in questo sandbox, l'ho notato solo quando ho provato la sfida sul serio.
xnor

4
@xnor Hmm, ciò causerebbe un grosso problema con il meccanismo di punteggio. È quindi possibile effettuare una presentazione arbitrariamente grande e breve quasi impossibile, e vincere la sfida.
Adnan,

3
@Adnan Potresti risolverlo definendo score = len (codice segreto) / min {len (codice pubblico), len (codice più breve pubblicato dai ladri)}.
Anders Kaseorg,

3
@Adnan Il contesto è il suggerimento di xnor di far contare il punteggio se i ladri battono il tuo punteggio pubblico ma non corrispondono al tuo punteggio segreto. Sto proponendo un modo per farlo funzionare evitando il problema di cui ti preoccupi.
Anders Kaseorg,

3
Sì, finalmente un'altra sfida di Cooooops e Rooooobbbbbers.
insertusernamehere

Risposte:


36

Seme , 5861 byte, punteggio = 5012/5861 = 0,85

La sequenza è primi ( A000040 ) con offset 1. a (1) = 2, a (2) = 3, a (3) = 5 ecc.

106 4339425277766562922902283581834741289660008085947971671079664775075736459902652798498038280771739790213868067702391567527146683746696872737118568202495046682058807677834082334206717794057290386357040004038910321326390033894692316122893125849512049817771469697446796247656883761642659391998672259889315862253584980121050081936190889196979721443972131545258528161479083569474217100401074866410321578452749003295370495810488337344650619973376676577461877392643228932028285261311284691649403036725905675576380944186859525020321196255472295415627414823269713084816196540461818684672201926996228242729726187404845487167114556965625764494860789841409004737497250600337038738035289643512265772877903971230007222865264200102217827010958702813633039465646713707971175729900391272165457566364779628858903697222589748797809421482136725017988969980267265196209027326008642464190920825439635011414535065156799655809935871795742526416544853103823906918352472744460644939241345215614650110978624804796257165525598653433482592675123776747497586586903140407616610040250976121531777891358439091358523224019193934111409521776865798864774150127996987606796522094617839125169013781373842026970010007574244564780540958252950607459585834584855526028427463655493110963000525209314274839412714497954647707284352161251044088451086878301225167181712809612927720502228546704347274977503482518386819117870800284276687560241308964641752876311905619184965236937789822712948719170589044519552259399272657757694404103028213338440810122219269214268424256451648966039627998513353115348057963135398345514276156595104642595820063441019481255889600472121104059631555738973905087895006671206400595057069658845297458058584470727379036742268107372233190371861824194831387484478317333784774872796689435056263039565495723444232483369405079512770383639748492508848098080619713255928884946598796741958520788406091704951276729428229224292748702301286318784744573918534142896761450194446126776354892827260482520089107240497527796383449573487121759294618654056309957794765646022274249211113876873102681817500947681708211056388348991201016699342850495527766741633390367735662514559206616070479934780700857859919517187362382258597709910134111383911258731633002354208155277838257255571878219168563173495861133946240923601273185050088148273459064040178741322137494758164795598458780786653602794809987537740537018415433767449108362051063814315399931951925462073202072886716208053889630274798247936580024665863765351912184189125660586187615847325588786048095120241198943086897428919324650596915625795076460123743259068671341944912206659194476673792489442514470540309819938731582497982088632076086088279435186513066668502875362808653657423813387124496122632219269226944975782747969308509448942429277233562654639293567532567668357917753810024961683829653277391094269518376510962710057956994339018307344554672056556222387849272880157861877494719706801624724491116189525394408237355854147113614645956561900837121715298276123085019204014577395795131906357190097536924932784935203378709529040555114884933996346694363879974847691625806412083107877442577777402405491226347699452398189866905599648314105255526411599513768016126067224570735746339691839657336828937030584950250402550603260483421505256395736457980708347396132620971927806636308105501893575073944959824958733880580825249931469481777083600987966500968473202481877213198175820182125298036242272662171321630056435823478710070315022531849275633515412140708923196338877549535352180465031450246889723670908173572778497329815806296369714467774385173078365517895215622645081749679859298824530173433952201710212962315524645807786760255396609101229899503687886977229729747349967302227815724222900649259120496955396616388023947812556426182596252076072286860171961582235043470190275528327438941205680729222092142315348205283459886659277456757338926863444370956987436702675569004062857510888080701482282900718067707825890168959050535970636214821273965900140346587802750221148933877600652180282267212515086387728695565345543441575183083490091817551421389124038251086513387106526847199935776240422217886407416027185332010280169564289345500368555274327733580514983967396271907637608170801013991375555069570288329399237332712790289521766624379537848996471168926519414464863388365890585061582441222989105844636887033599262856636618609644981203616618819656730174147506366895579518927217154437260067784133452192099436160162797896733220282837763342940047719962882720310397266700665603774047807673735452896542215047419894928360985667680051383584281780118001522220147385455276205847620842066894760474814386271419398361771509559702341442734727141312211989794380570433135781896005067541537095546614638001539678780066976441749790924521292297473522803115912791790379839635473194794843511234906415092857115568242448079933264380632375450234146479596225552359821776361923588178896354011117990551249184457345201223244319766597339520899930287542362386381372955844126876031262062731835081542890548095759704856479235361996156162229417953890962902505112862674541020677153054937034038823204321411753183982406667628845943390275194956321260584953509501973880059966268311741789559039618821364775407403947492157311255310143283125490988585303127442698159113924719563571459841025286208880511134222538431747221840824203312684036627017414295981003169360893015436564680773233890198618904647085929678054127680367983802905553144716598061593632352021737488422700265144189474970515439967472618438343180405852959047054139020095303915498443045344690691354304662161461750826840689185141612937350984288238847592910919431788170821390987459951181698659544772214696392241600642992000900364649438402093845534643663733216626212187314397293309505677932731383013397665193960914949915855970134736764497124186701371371881061763702617034928084811708964018610410971938419410791443362686750151572343348438861493025667676713

I programmi Befunge-98 sono stati testati con questo interprete .

Soluzione:

62 92671758747582594731336103958852355343308794409787718910287760272065096600068486400261521203099179296478278113800406388237579729434074471528101978922110199511009255327569364221068648720732186414156697930516237153253745234146558781777104311285708042469572129997820696177040412749585193035961972308024909384538547357820271391461203855177879703963391294547499579588457829374981409596253284387318191154655397249791533591896711203680125312645807793061567274893660125978667479654664977040722935418267606762108334976561590548772755653088127344268269983549959628254712562135604114391709222466418283973346968039685907258341712475120187026707300070769277380483828579629391533415119380882514570806683534933872011332303802477012040660361613689139008855327957705058672774790021218679288003003953301651226513713984857174365383390364296326192225244927665294515693697694918935732394438095829822147927645949273829493190176397786165741955566462476231578299385726525505407052332068778469428870102672560545990553686935179657522071350801304923521681690806124866463401094200444841941834667455137491597902735287855498886460945851544063102556545691787612423033525861765804657417395955322217721677429700032333887700477665924915189639029356029794151144702621112140447347270986003871777552705154393697526621456025974679633450745341583481291685834000335168972075093212539251102818038917942913311300883294570091156661153874804268309393591292001433191276766990017144340677002050765359295580546228905861008474333888247511333039470305173620221481374758754343560048199433044290376988914313248904786418615239832295700238599693805552407166251501198275363727855984193340187485162706203747898935844148656997727555488455764358003951396850496841760348138874901474547533715922587211143833052692993182786162665394965914056238514702648647904702501871758140636318131208564891924287008550289224318358936576352473100482724524675417108540029486047223784009872784235439805791496176981701859374772960623187174667015174831665360382067784289660747175586412802848517818731070091826086320292632019033525579172665790335268736167170506003176022610987557889205903933680970434653929602313812168432779881423599218075810156457004870273456214668951969634696002866863369645150677406566613367576078149751561615160777945725724620047443832859087000460506626402089973036918592151204779260519899343451226942874643654023265001514280212345984966126290887141500898797940093805650642580450926977375576911590855135774911449619005627413806680159169643085790457809525639117624947749945044091079624534522626841372604654172723500062361904864176709974716350878399949908529715899937417421315012456868864220900338162700464737416505300734198857624165994112815507157337074226022552948626042899845891195024145834980781844015548398775284084741665926642729256313545870065439195137107807599897817556866239630270351410298105991743248934632486671734759038305157913444368204353943206369388913837519310828223093441519335111533635957953613758894822654736600526811789875376813119426924959017038654104216784121093688306563643326587639486472221258233221666454164763738631579246841130247019172136121041002571694545781948282785399495873501148416357057693713305042834246973535325571882393889489457235864027134943913383832461393499203435931881991959787045205816313165984531168137210464591653390767999403651750434079431253272021002273680565508340556736474927770564408343360602057949991306130979603289667991356237787412616305022971197507815004141825394838946364485315703051195195566893733123391158803413838803831010122718476800229685100410524315094662633390222854924884579083098055980542607258318868514903610787510921796157291630993618714015755412239872758443166948699744841899868754369627081727143351807615097715679652005998467491609044596871312950634152039807480021814406950780706131231897491212637759991818212542181136384052857191779658528790835620632765143337026858373660057972387266312097135260115742458792764792668883627539340807572869610941154184473111399152964165437112713815173281951728792354570851956468302291939952274005357250989986640723863408051924618400882866539701190471828299028566020683682444415198672952980294639217217840535225987439355834087974716313911977302809235338769491339553247328065401203243450045946392960085318343121705830317674151229536850726617093615850507955559652374337057819549481320081981520577039493601331233500403284295119207704095876958023271178964331413629547646937335760969491450824461526563643617594783473684358594189269252499897162333533284912320654686655888508024970105099967896167541978181602786701854274646885561632089896312016789257459673121974866871919820865433343707787147414982407950775979279255414469970743690769124215210050618943726165676550098723299244096267839544684847323547847832349290874282817429866612456451105673214159820212156069771415582214200701894487126822756864305461967035982308878073752362075553218935807632264803200753661147341613284071218919438723527468202903770806766095252957940538229987302177328543423522712562396242285027178395886649344

8
Ciò richiederebbe secoli per rompersi o_____O
TuxCrafting

4
The Right Language for the Challenge
DLosc

26

Jelly , 5 byte , punteggio 0,8 (4/5) [ incrinato! ]

R²Sƽ

Calcola A127721 .

Provalo online!


Ecco la soluzione:

RÆḊḞ
  • accetta implicitamente input n
  • R: elenco da [1, 2, ..., n]
  • ÆḊ: Nel nostro caso, questo restituirà effettivamente la radice quadrata della somma dei quadrati (che potrebbe essere utile nel golf futuro)!
  • : pavimenta il risultato.

La documentazione per le ÆḊletture:

ÆḊ: Determinante, esteso a matrici non quadrate.

La chiave è estesa a matrici non quadrate . Il "determinante" di una matrice non quadrata è generalmente indefinito, ma una definizione ragionevole è sqrt(det(A A^T))(che per una matrice quadrata si riduce a |det(A)|). Nel nostro caso, A A^Tè una matrice 1 x 1 contenente la somma dei quadrati. La radice quadrata del determinante di ciò ci dà esattamente ciò di cui abbiamo bisogno per radere l'ultimo byte!


4
Benvenuti in Puzzle di programmazione e Code Golf!
Adnan,

2
Solo per curiosità, questo è effettivamente possibile in 4 byte? Sono stato bloccato su questo per ore: p.
Adnan,

1
@Adnan, sì, è possibile. Sono contento di sentire che lo trovi impegnativo!
George V. Williams,


@ jimmy23013, sì, ben fatto!
George V. Williams,

12

Retina , 28 byte, punteggio = 0,9286 ... (26/28), incrinato dal febbre

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

Calcola A192687 , (offset = 0).

Provalo online! (La prima riga abilita una suite di test separata da avanzamento riga.)

Questa è la differenza tra le sequenze maschili e femminili di Hofstadter . ( Rilevante sfida PPCG. )

Questo era il mio codice originale:

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

Questa risposta è stata comunque un po 'una scommessa, perché la soluzione reale è basata su una regex che ho annunciato essere la regex di test Fibonacci più breve conosciuta in chat alcuni mesi fa. Fortunatamente, nessuno sembrava ricordarlo. :)



11

Esagonia , 91 byte, Punteggio = 0,725274725 (66/91) [Cracked]

Calcola A000045 (sequenza di Fibonacci, offset 0).

Non sarò troppo sorpreso se qualcuno riuscirà a battere questa e la mia versione più giocata a golf , anche se dovrebbe essere difficile.

Modifica: Holy cow, @MartinEnder mi ha fornito una soluzione a 33 byte.

Golfato (91):

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

formattato:

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

Provalo online!

Non ho intenzione di pubblicare una spiegazione per questo, è troppo orribile ...

Golfato (66):

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

formattato:

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

Colorato:

Sequenza di Fibonacci

Provalo online!

Spiegazione:

Il layout di memoria che ho usato sembra un po 'così:

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

L'inizializzazione (in nero) imposta a = 0 e b = 1. Quindi, il ciclo principale:

  • va dalla acella di input -'"
  • decrementa l'input - (
  • aggiunge be a - {{=+
  • lo sposta "fuori mano" - "+{=*
  • imposta a a b - '+
  • sposta un "fuori mano" - '+}=*
  • riporta b + a nella posizione originale - "=+
  • imposta b su b + a - "+
  • riporta indietro nella sua posizione originale - }+

Quando la cella di input raggiunge 0, l'MP si sposta su a, stampa ed esce.

Quello che avrei potuto fare per salvare più byte è usare &, che imposta semplicemente la cella corrente sul suo lato sinistro o destro. Avrei anche potuto avere un controllo del flusso leggermente migliore, ma va bene così com'è.


Cracked. Grazie per avermi fatto scrivere un programma Fibonacci. Non so perché non l'ho mai fatto prima. :)
Martin Ender,

In realtà, quello che sto usando &è per spostare l'input attorno ai bordi a / b / a + b in modo che scambino i loro ruoli alla successiva iterazione. In questo modo, non ho bisogno di spostare a, b e a + b.
Martin Ender,

@MartinEnder Spiacente, ho scritto quella parte prima di vedere cosa ha fatto il tuo programma. La tua soluzione è molto più intelligente
Blue

10

M , 10 byte , punteggio 0,6 (6/10) [ incrinato ]

R‘ạḤc’*@RP

Un po 'economico poiché M e Jelly sono abbastanza simili, ma permessi dalle regole. Questa versione è basata sulla crack di @ LeakyNun alla mia risposta di Jelly.

Questo calcola la sequenza A068943 . Provalo online!

Soluzione prevista

Il seguente codice funziona in M ​​/ Jelly.

R¹¡PÐL

In realtà avevo una soluzione a 4 byte a cui ho aggiunto un po 'di lanugine per rendere più difficile il crack usando la forza bruta.

R¡FP

Provalo online!

Questo è quello che ho intenzione di spiegare.

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.

Cracked! È stato divertente!
miglia

10

Stack Cats , 14 byte, punteggio = 13/14 = 0.929 [ incrinato ]

Sono 10 byte di codice, più 4 per gli argomenti -nm.

Calcola A017053 . Nel caso in cui OEIS è inattivo, ovvero a a(n) = 7n + 6partire da n = 0.

![_-_:-_-_

Il codice completo (utilizzabile senza -margomento) è![_-_:-_-_-_-:_-_]!

La soluzione nascosta era

!]|{_+:}_



7

Haskell, 15 byte, punteggio = 13/15 (0,866) ( crackato )

f x=1+2*div x 2

A109613 con offset 0. Ripete ogni numero dispari due volte.

1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, ...


6

Brachylog , 27 byte, punteggio = 0.666 ... (18/27), Cracked!

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

Calcola A010551 (offset = 0).

Puoi provarlo online qui .

Spiegazione

Dal momento che la stragrande maggioranza delle persone non conosce questa lingua, e dal momento che sto postando questa risposta principalmente per convincere la gente a guardarla (vedi: Wiki di Brachylog ), fornirò una breve spiegazione del codice sopra:

+           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 byte, punteggio = 0.9623 (51/53) Cracked

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

Calcola la sequenza di Perrin, A001608

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

Primo tentativo di golf con codice, sentiti libero di segnalare eventuali errori.

Spiegazione dopo il cracking:

miglia abbreviato i primi tre valori (0,1,2) -> (3,0,2) a

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

mentre la mia soluzione era un po 'troppo ingegnerizzata

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

Combinando i due trucchi, ottieni

n<3?3-3*n%5

per un 47 byte

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

che sembra piuttosto compatto per Java :)



5

Cheddar, 7 byte, punteggio = 0,8571 (6/7), [crackato]

n->2**n

Abbastanza semplice, solo i poteri di due. OEIS A000079

Provalo online!


2
Uh, i creatori di lingue sono avvantaggiati qui ...
Dennis,

10
Soprattutto i creatori di lingue le cui lingue sono gravemente carenti di documentazione.
Mego


2
@Mego il codice di auto-documentazione non è considerato un documento? I revisori del codice mi hanno mentito! D: <
Downgoat

1
@Downgoat Quando hai un link sul tuo sito web chiamato "Documentazione" ed è terribilmente incompleto ... Sì.
Mego


4

Python 2, 43 byte, punteggio = 0.9302 (40/43), incrinato

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

Calcola A072493

Vediamo se qualcuno può giocare a golf su tutti e 3 i byte.


Aspetta, va davvero bene se Trueviene usato per rappresentare 1?
R. Kap


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

@ R.Kap sì, lo è. Qualsiasi valore che sia vero ( if xè vero) è un ritorno valido.
Rɪᴋᴇʀ

4

Pyke, 11 byte, punteggio = 0,45 (5/11) [crackato]

hZRVoeX*oe+

Calcola OEIS A180255

Provalo qui!


1
Volevo provare questo, ma la documentazione per la lingua non è molto illuminante. (ad es. Znon è documentato; il linguaggio afferma di essere basato *sullo stack ma dopo lo stack ci sono solo zeri nonostante abbia un effetto sul resto del codice; l'ordine dei parametri non è chiaramente specificato)
Score_Under

1
@Score_Under cosa potrei fare per migliorarlo? - Perfettamente felice di discutere in una chat room di ciò che non è chiaro
Blue

Sicuro. Non so come avviare una chat, ma ho modificato il mio commento sopra con alcuni esempi - Pensavo che sarei stato in grado di farlo prima che tu lo leggessi;)
Score_Under






3

Sesos , 14 byte, punteggio = 0,8571 (12/14) ( crackato )

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

Calcola A000290 .

Provalo online!

suggerimenti

Questo file binario è stato generato dal seguente assemblatore:

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 byte, punteggio = 0,8181 (9/11), incrinato

YftdA-1bn^*

Calcola la funzione Möbius o A087811 (offset 1).

Provalo online!

Risorse per i ladri

Penso che questo dovrebbe essere facile, ma comunque qui è di aiuto.

Spiegazione del codice:

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

Lingua documentazione .

Chat room MATL .



@feersum Ben fatto! Per riferimento, la versione a 9 byte eraYftdA_wn^
Luis Mendo il


3

MarioLANG , 87 byte, punteggio = 0,839 (73/87), incrinato

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

Calcola A000217 , i numeri triangolari. Offset 0.

Provalo online!

Soluzione breve:

Dal momento che il crack ha tolto solo 1 byte, condividerò la mia soluzione in 73 byte, che utilizza un algoritmo completamente diverso:

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

Provalo online!

Il primo programma stabilisce tutti i numeri da n a 1 lungo il nastro, quindi aggiunge tutti i numeri fino a quando non incontra una cella con valore 0. Lo fa copiando ciascuna cella nelle due celle adiacenti, decrementando la copia giusta e ripetendo il processo su di essa fino a raggiungere lo 0. Durante questo processo, il nastro appare così (per 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

... e così via. Quindi si sposta a sinistra, sommando le celle fino a raggiungere una cella con 0.

Il secondo programma funziona solo con tre celle del nastro. Fino a quando la prima cella raggiunge 0, effettua le seguenti operazioni:

  • Sposta il valore della prima cella nella seconda cella.
  • Decrementa la seconda cella su 0, aggiungendo il proprio valore alla prima e alla terza cella.
  • Decrementa la prima cella.

Dopo che la prima cella raggiunge 0, la terza cella conterrà n + (n-1) + (n-2) + ... + 2 + 1.


La tua versione da 87 byte funziona in un altro interprete? Quello su Tio! sembra richiedere una nuova riga finale ...
Dennis

@Dennis: funziona sull'interprete Ruby senza la nuova riga. Per qualsiasi motivo, l'interprete su TIO non emetterà da a :se si trova nella linea di fondo, motivo per cui ho incluso la nuova riga finale nel collegamento. Martin e io ne abbiamo discusso in un'altra delle mie risposte a MarioLANG.
Business Cat

OK, sto solo controllando. Ho aggiunto wrapper per Tio! che aggiunge una nuova riga al codice sorgente.
Dennis,



3

Haskell, 28 byte, punteggio = 0,3571 (10/28), incrinato

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

A006519 , la massima potenza di 2 che divide n, a partire da n=1.

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

Mentre ottieni credito per qualsiasi codice più breve, ritengo che il vero puzzle scenda a 10 byte.



@nimi Complimenti, ce l'hai.
xnor





2

05AB1E , 7 byte, punteggio = 0,571 (4/7), incrinato

0s·Ì3c;

Calcola: A006331

Provalo online

Dopo aver giocato a golf 5 versioni uniche di questa sequenza prima di trovare questa versione pubblica, spero di non aver lasciato alcun evidente miglioramento là fuori, quindi sarà almeno una sfida per i ladri.



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.