Kannst du mich übertreiben? (Abschnitt Räuber)


43

Räuber Abschnitt

Die Cops-Sektion finden Sie hier .

Herausforderung

Ihre Aufgabe ist es, die Beiträge der Bullen in derselben Sprache und derselben Version zu übertreiben (z. B. Python 3.5Python 3.4 , so dass dies nicht zulässig ist). Eine Übermittlung ist übertrieben, wenn die Länge in Bytes kürzer als die ursprüngliche Übermittlung ist. Sie müssen nur mindestens 1 Byte abwerfen, um eine Einreichung zu knacken. ZB wenn die Aufgabe darin bestand, 2 × n auszuführen , und die Vorlage die folgende war:

print(2*input())

Sie könnten den Cop überraschen, indem Sie Folgendes tun:

print 2*input()

Oder auch das (da Lambdas erlaubt sind):

lambda x:2*x

Veröffentliche dies mit dem folgenden Header:

##{language name}, <s>{prev byte count}</s> {byte count}, {cop's submission + link}

Zum Beispiel:

Python 2, 16 12 Bytes, Adnan (+ Link zur Einreichung)

lambda x:2*x

Berechnet A005843 (Offset = 0).

In diesem Fall haben Sie die Übermittlung geknackt .

Wertung

Die Person, die die meisten Einsendungen geknackt hat, ist der Gewinner.

Regeln

  • Die Crack-Einreichung muss in derselben Sprache wie die Cop-Einreichung sein.
  • Dieselbe Eingabe sollte zur selben Ausgabe führen (also sollte a (2) = 4 4 bleiben).
  • Für Sprachen wie Python können Sie Bibliotheken importieren, die standardmäßig in der Sprache enthalten sind. (Also, keine Numpy / Sympy etc.)
  • Eingabe und Ausgabe erfolgen beide dezimal (Basis 10).

Hinweis

Diese Herausforderung ist beendet. Der Gewinner der Räuber- Sektion ist feersum . Die endgültigen Ergebnisse für den CnR sind nachstehend aufgeführt:

  • Feersum : 16 Risse
  • Dennis : 12 Risse
  • Undichte Nonne : 6 Risse
  • Lynn : 4 Risse
  • Meilen : 3 Risse
  • Martin Ender : 2 Risse
  • Emigna : 2 Risse
  • jimmy23013 : 1 Riss
  • Sp3000 : 1 Riss
  • zufällig : 1 Riss
  • Alephalpha : 1 Riss
  • nimi : 1 Riss
  • Zerstörbare Wassermelone : 1 Riss
  • Dom Hastings : 1 Riss

Antworten:


8

Cheddar, 7 6 Bytes, Downgoat

(<<)&1

Dies scheint zu funktionieren, aber es ist immer möglich, dass ich die Sprache nicht richtig verstehe.


Alternativ (**)&2. Ich habe es versucht 2&(**)und bin gescheitert. :(
Dennis

@ Tennis (**)&2funktioniert gut für mich: / aber das funktioniert auch.
Downgoat

14

Gelee ,54 Bytes , George V. Williams

RÆḊḞ

Probieren Sie es hier aus.

Ein verstecktes Feature!

Wenn ich mich richtig erinnere, ist ÆḊ(A) = sqrt (det (AA T )) n! mal das n-dimensionale Lebesgue-Maß eines Simplex aus n Eingabepunkten und dem Ursprung im m-dimensionalen Raum. Wenn n = 1, degeneriert es zur euklidischen Distanz. Immerhin nicht so komisch ...


1
Richtig, ich habe etwas Seltsames mit Determinanten gemacht ... So gut versteckt, dass ich es selbst nicht finden konnte!
Dennis

@Dennis Ich weiß das, weil ich eines Tages auch versucht habe, die Determinante zu erweitern, und das bekommst du, wenn du willst, dass sie als Cross-Produkt funktioniert. Aber es hat lange
gedauert,

Können diese wirklich als "Bytes" betrachtet werden? Die Codepunkte für und liegen im UTF-16-Bereich. Dies würde diese Lösung zu 6 Bytes bei heterogener Codierung und 8 Bytes bei homogener Codierung machen. Hier ehrlich fragen.
Jules


11

Hexagony , 91 33 Bytes, Blau

1""?{\>{+/</+'+./_'..@'~&/!}'+=($

Entfaltet:

    1 " " ?
   { \ > { +
  / < / + ' +
 . / _ ' . . @
  ' ~ & / ! }
   ' + = ( $
    . . . .

Probieren Sie es online!

Sieht immer noch ein bisschen golfen aus, aber ich dachte, ich würde es posten, bevor mich FryAmTheEggman schlägt. ;)

Erläuterung

Hier sind einige farbcodierte Ausführungspfade:

Bildbeschreibung hier eingeben

Diese sind jedoch aufgrund des Golfspiels unnötig verworren. Hier ist der exakt gleiche Code mit einem genaueren Layout:

Bildbeschreibung hier eingeben

Das ist besser. Und schließlich ist hier ein Speicherdiagramm, in dem der rote Pfeil die anfängliche Position und Ausrichtung des Speicherzeigers (MP) angibt:

Bildbeschreibung hier eingeben

Das Wesentliche ist, dass ich iterativ Fibonacci-Zahlen an den drei mit f (i) , f (i + 1) und f (i + 2) bezeichneten Kanten berechne, während ich den Iterator an den Kanten A , B und C verfolge . Dabei werden die Rollen dieser Kanten nach jeder Iteration zyklisch ausgetauscht. Mal sehen, wie das passiert ...

Der Code beginnt auf dem grauen Pfad, der einige anfängliche Einstellungen vornimmt. Beachten Sie, dass f (i) bereits den richtigen Anfangswert von hat 0.

1   Set edge f(i+1) to 1.
""  Move the MP to edge A.
?   Read input n into edge A.
)   Increment n.

Jetzt ist der grüne Weg die Hauptschleife. _und >sind nur Spiegel.

(     Decrement n.
<     If the result is zero or less, continue on the red path, otherwise
      perform another iteration of the main loop.
{     Move the MP to edge f(i+2).
+     Add edges f(i) and f(i+1) into this edge, computing the next Fibonacci number.
'     Move the MP to the edge opposite A.
~     Multiply by -1 to ensure that it's non-positive (the edge may have a positive
      value after a few iterations).
&     Copy the current value of n from A.
'     Move back and to the right again.
+     Copy n by adding it to zero. Since we know that the other adjacent edge
      is always zero, we no longer need to use ~&.
'+'+  Repeat the process twice, moving n all the way from A to B.
=     Reverse the orientation of the MP so that it points at f(i) which now
      becomes f(i+2) for the next iteration.

Auf diese Weise bewegt sich der MP um das innere Triplett von Kanten und berechnet aufeinanderfolgende Fibonacci-Zahlen, bis er nNull erreicht. Dann wird endlich der rote Pfad ausgeführt:

{}    Move the MP to f(i).
!     Print it.
@     Terminate the program.

Mit Timwis HexagonyColorer und EsotericIDE erstellte Diagramme .


Heiliger Bimbam! Ich hatte erwartet, von dir geschlagen zu werden, aber nicht so sehr von mir! 0.o
Blue

@Blue Haben Sie vor, eine Erklärung zu Ihrer hinzuzufügen? Mich würde interessieren, wie das funktioniert. :) Ich werde auch früher oder später eine Erklärung hinzufügen, aber ich bin mir nicht sicher, ob ich heute die Zeit finde.
Martin Ender

Ja, meine verwendet eine traditionellere Berechnungsmethode. Ich habe & komplett vergessen, das hätte ein paar Bytes sparen können
Blue


7

Stapel Katzen, 14 13 Bytes, Feersum

^]T{_+:}_

mit den -nmFlags für +4 Bytes. Probieren Sie es online!

Okay, diese Schleife war verrückt. Ich habe verschiedene Ansätze ausprobiert, z. B. Brute Forcing über ein reduziertes Alphabet und Brute Forcing 3x+2oder den 5x+4Versuch, es zu erweitern, aber ich hätte nie erwartet, dass die Lösung tatsächlich eine Schleife enthält.

Der beste Weg, um zu sehen, wie dies funktioniert, besteht darin, ein DFlag zum Debuggen hinzuzufügen (also mit auszuführen -nmD) und das Debuggen für den obigen TIO-Link zu aktivieren. Eine {}Schleife merkt sich die Stapelspitze am Anfang der Schleife und wird beendet, wenn die Stapelspitze wieder diesen Wert aufweist. Im Inneren der Schleife macht es Spaß, die drei obersten Elemente des Stapels zu subtrahieren und zu wechseln. Auf diese Weise kann die Schleife für so viele Iterationen ausgeführt werden.


6

Sesos, 14 11 Bytes, undichte Nonne

Berechnet n 2 . Probieren Sie es hier aus.

Hex-Dump:

0000000: 16c0f7 959d9b 26e83e ce3d                         ......&.>.=

Ab Montage:

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

Schön, du bist noch kürzer als meine ursprüngliche Golfversion.
Undichte Nonne

Dies wird 1 + 3 + … + (2n–1)anstelle von n × n:) berechnet
Lynn

Ich habe auch Ihren Ansatz verwendet
Leaky Nun

6

Woefully 776 759 Bytes, zerstörbare Wassermelone

| |||||||| | |
|| |||||| |
||| |||| |
|||| || |
||||| || |
|||| |||| |
||| |||||| |
|| |||||||| |
| |||||||||| |
|| |||||||| |
||| ||||||| |
||||||||||| |
||||||||||| |
||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
||||||||| |
||||||||| |
||||||||| |
|||||||||| |
||||||||||| |
|||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
|||||||| |
||||||| |
|||||| |
||||| |
|||| |
||| |
|| |
| |
| |
| |
|| |
|| |
|| |
|| |
|| |
| |
| |
| |
|| |
||| |
|||| |
||||| |
|||||| |
||||||| |
|||||| |
||||||| |
|||||||| |
||||||||| |
|||||||||| |
||||||||||| |
|||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
|||||||| |
||||||| |
|||||| |
||||| |
|||| |
||| |
|| |
| |
| |
| |
| |
|| |
| |
|| |
||| |
||| |
|||| |
||| |
|| |
| |
| |
| |
|| |
|| |
|| |
|| |

Ich habe versucht, den Quellcode für diese Sprache zu lesen, aber es war zu verwirrend. Zum einen ip[1]ist eine Zeilennummer ip[0]die Spaltennummer, während die cpKoordinaten umgekehrt verwendet werden. Manchmal wird jedoch der Wert von cpzugewiesen ip. Ich habe es aufgegeben, zu verstehen, was das Programm tut, und habe einen Weg gefunden, die identische Befehlsfolge mit weniger Takten zu codieren.



5

J, 17 12 Bytes, Meilen

+/@(]!2*-)i:

So ziemlich das gleiche wie das Original, nur mehr Golf. :)

i:mit +1Bereich im Vergleich zu i.ist nützlich (und komisch). Wenn du das i.hier verwendest n=0wird das aber zum Glück falsch gelöst i:.

Probieren Sie es hier online aus.


Ordentlicher Trick mit i:Nullen für negative Werte. Meine Version war +/@(]!2*-)i.,].
Meilen

5

M, 10 6 Bytes, Dennis

R×\³¡Ṫ

Mit n wird die n- te Fakultät von n berechnet . Das war eine lustige Übung!

Der Code kann als Jelly ausgeführt werden, sodass Sie ihn online testen können .

Erläuterung

R×\³¡Ṫ  Input: n
R       Create the range [1, 2, ..., n]
   ³¡   Repeat n times starting with that range
 ×\       Find the cumulative products
     Ṫ  Get the last value in the list
        Return implicitly


5

Haskell, 15 bis 14 Bytes, xnor

until odd succ

Ich habe ein paar Stunden lang erfolglos gelernt, "sinnlose" Syntax zu entschlüsseln ... untilIch fand das stattdessen.

Oder für weniger gut aussehende 13 Bytes until odd(+1).


Gut gemacht, das hatte ich mir vorgestellt. Ich mag die drei Wörter.
8.

4

Python 2, 43 40, xsot

g=lambda n:n<2or-~sum(map(g,range(n)))/3

Interessanterweise unterscheidet sich das von dem, was ich ursprünglich hatte.
Xsot

4

Pyke, 11 9 Bytes, Schlammfisch

hVoeX*oe+

Probieren Sie es hier aus!

Wie es funktioniert

          Implicit input: n (accumulator), n (iterations)
h         Increment the number of iterations.
 V        Do the following n + 1 times.
  o         Iterator. Pushes its value (initially 0) and increments it.
   e        Perform integer division by 2.
            This pushes 0 the first time, then 1, then 2, etc.
    X       Square the result.
     *      Multiply the accumulator and the result.
      oe    As before.
        +   Add the result to the accumulator.
            This sets the accumulator to a(0) = 0 in the first iteration and
            applies the recursive formula in all subsequent ones.

Mit dieser Methode können Sie 8 mit bekommen hV~oX*o+. Meine 5-Byte-Antwort warSDmX^
Blau

Ah, ~oist ordentlich. Ich habe jedoch keine Ahnung, was SDmX^passiert.
Dennis

Grundsätzlich wird eine gemischte Basiskonversation im 1-indizierten Bereich gegenüber dem Quadrat verwendet. Nicht etwas auf OEIS
Blue

Oh, betrifft mnur das Xund nicht das ^? Das erklärt einiges.
Dennis

Ja, mund ähnlich nur den nächsten Knoten verwenden. Irgendwelche Kommentare zu meinen Dokumenten etc?
Blue

4

05AB1E , 7, 4, Emigna

LnOx

Aus der Formel für die Summe der Quadrate positiver Ganzzahlen 1 ^ 2 + 2 ^ 2 + 3 ^ 2 + ... + n ^ 2 = n (n + 1) (2 * n + 1) / 6, wenn wir multiplizieren beidseitig zu 2 erhalten wir Sum_ {k = 0..n} 2 * k ^ 2 = n (n + 1) (2 * n + 1) / 3, eine alternative Formel für diese Folge. - Mike Warburton (mikewarb (AT) gmail.com), 8. September 2007


Ich bin froh, dass du es mit 4 geknackt hast, da es eine unbedeutende Modifikation meiner öffentlichen gab, die ich verpasst hatte. Nett!
Emigna

4

Jelly, 22 21 Bytes, Dennis

_²×c×Ḥc¥@÷⁸÷’{S
‘µR+ç

Ich habe mehrere Stunden damit verbracht, Jelly-Quellcode für den letzten zu lesen, also könnte ich diese "Fähigkeit" genauso gut anwenden. Ich hoffe, @Dennis teilt uns seine mathematischen Entdeckungen mit, die eine kürzere Formel erlauben (vorausgesetzt, es gibt etwas und nicht nur seltsame Geleetricks!).



@ Sp3000 Oh, warum hast du es nicht gepostet?
Feersum

Mehr Zeit zum Nachdenken über die 6, bevor Dennis
Sp3000 reposts

4

J, 20 bis 19 Bytes, Meilen

[:+/2^~+/@(!|.)\@i.

Dies berechnet das Produkt als Summe der quadratischen Fibonacci-Zahlen, die als Summe der Binomialkoeffizienten berechnet werden.

Zum Glück hat @miles selbst den Code gepostet, um Fibonacci-Zahlen in diesem Kommentar zu generieren .


4

Acc !! , 526 525 Bytes, DLosc

N
Count x while _%60-46 {
(_+_%60*5-288)*10+N
}
_/60
Count i while _/27^i {
_+27^i*(_/27^i*26-18)
}
_*3+93
Count i while _/27^i/27%3 {
_-i%2*2+1
Count j while _/3^(3*j+2-i%2)%3 {
_+3^(1+i%2)
Count k while _/3^(3*k+1+i%2)%3-1 {
_+3^(3*k+1+i%2)*26
}
}
}
Count i while _/27^i/3 {
_-_/27^i/3%27*27^i*3+_/3^(3*i+1+_%3)%3*3
}
_/3
Count i while _/100^i {
_*10-(_%100^i)*9
}
Count i while _/100^i/10 {
_+_/100^i/10%10
Count j while i+1-j {
_+(_%10-_/100^(j+1)%10)*(100^(j+1)-1)
}
}
_/100
Count j while _/100^j {
Write _/100^j%10+48
}

Ich habe keine Ahnung, wie das funktioniert, aber ich konnte eine winzige Verbesserung feststellen.

24c24
< _+_/100^i*100^i*9
---
> _*10-(_%100^i)*9

Ah, schieß. Ich hatte gehofft, dass niemand einen Mathe-Golf fangen würde, den ich verpasste. +1
DLosc

4

Haskell, 10 Bytes, xnor

gcd=<<(2^)

Anwendungsbeispiel: map ( gcd=<<(2^) ) [1..17]-> [1,2,1,4,1,2,1,8,1,2,1,4,1,2,1,16,1].

So funktioniert es: Von der OEIS Seite wir sehen a(n) = gcd(2^n, n)oder in Haskell Syntax geschrieben: a n = gcd (2^n) n. Funktionen mit dem Muster f x = g (h x) xkönnen über die Funktion =<<: punktfrei f = g =<< hgeschaltet werden, gcd=<<(2^)was sich somit wieder in übersetzt gcd (2^x) x.


............... How
TuxCrafting





3

MATL, 11 10 Bytes, Luis Mendo

YftdAwg_p*

Anstelle von -1 ^ length (array) werden die Elemente in Boolesche Werte (die immer 1 sind) konvertiert, sie werden negiert und das Produkt der Elemente wird genommen.




3

Brachylog, 11 bis 10 Bytes, Fatalize

yb:AcLrLc.

Probieren Sie es online!

Erläuterung

Brachylog ist eine von Prolog abgeleitete Sprache, deren größte Fähigkeit darin besteht, Dinge zu beweisen.

Hier beweisen wir diese Aussagen:

yb:AcLrLc.
yb:AcL       Inclusive range from 1 to input, concatenated with A, gives L
     LrL     L reversed is still L
       Lc.   L concatenated is output

Dies ist genau die Antwort, die ich im Sinn hatte, gut gemacht!
Fatalize

3

Jelly, 9 8 Bytes, Dennis

œċr0$L€Ḅ

Es tut uns leid! Ich konnte Ihre beabsichtigte Lösung nicht finden.

Dies beruht auf der Tatsache, dass C(n+k-1, k)die Anzahl der Auswahlmöglichkeiten für kWerte nbeim Ersetzen festgelegt ist.

Hinweis: Dies ist ineffizient, da die möglichen Mengen generiert werden, um sie zu zählen. Vermeiden Sie daher die Verwendung großer Werte von n online.

Probieren Sie es online aus oder überprüfen Sie bis zu n .

Ich habe später eine weitere 8-Byte-Version gefunden, die effizient genug ist, um n = 1000 zu berechnen . Dadurch werden die Werte unter Verwendung des Binomialkoeffizienten berechnet, und es wird vermieden, die Listen zu generieren.

Ḷ+c’Ṛ;1Ḅ

Probieren Sie es online aus oder überprüfen Sie bis zu n .

Erläuterung

œċr0$L€Ḅ  Input: n
  r0$     Create a range [n, n-1, ..., 0]
œċ        Create all combinations with replacement for
          (n, n), (n, n-1), ..., (n, 0)
     L€   Find the length of each
       Ḅ  Convert it from binary to decimal and return

Ḷ+c’Ṛ;1Ḅ  Input: n
Ḷ         Creates the range [0, 1, ..., n-1]
 +        Add n to each in that range
   ’      Get n-1
  c       Compute the binomial coefficients between each
    Ṛ     Reverse the values
     ;1   Append 1 to it
       Ḅ  Convert it from binary to decimal and return


3

QBasic, 30 bis 29 Bytes, DLosc

INPUT n:?(n MOD 2)*(n+.5)+n/2

Nett! (Obwohl nicht ganz das, was ich hatte.)
DLosc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.