Tauschen Sie die Sequenz aus

9

Ihre Aufgabe ist es, Code zu schreiben, der eine OEIS-Sequenz ausgibt und den Namen der Sequenz im Code ( A______) enthält. Einfach genug, oder? Nun, hier ist der Haken: Ihr Code muss auch eine zweite separate Sequenz ausgeben, wenn der Name der Sequenz im Code in den Namen der zweiten Sequenz geändert wird.

Input-Output

Ihr Code kann eine Funktion oder ein vollständiges Programm sein, das n über eine Standardeingabemethode verwendet und den n- ten Term der Sequenz ausgibt, der durch den auf der OEIS-Seite angegebenen Index indiziert wird.

Sie müssen alle Werte unterstützen, die in den OEIS-b-Dateien für diese Sequenz angegeben sind. Eine beliebige Anzahl, die nicht in den b-Dateien enthalten ist, muss nicht unterstützt werden.

Wertung

Das ist . Ihre Punktzahl ist die Anzahl der Bytes in Ihrem Code, wobei weniger Bytes besser sind.

Beispiel

Hier ist ein Beispiel in Haskell, das für A000217 und A000290 funktioniert.

f x|last"A000217"=='0'=x^2|1>0=sum[1..x]

Probieren Sie es online aus!

Ad-hoc-Garf-Jäger
quelle
Zur Verdeutlichung: Ihr Code sollte für zwei Sequenzen funktionieren, bei denen das Einfügen des Namens der Sequenz in diesen Teil des Codes die Nummer dieser Sequenz ausgibt.
HyperNeutrino
@ HyperNeutrino Ja. Wenn der Name der Sequenz ersetzt wird, sollte sich die Funktion des Programms in die zweite Sequenz ändern.
Ad-hoc-Garf-Jäger
1
Müssen die Sequenzen im Code führende Nullen haben?
pppery
@ppperry Ja, das sollte es.
Ad-hoc-Garf-Jäger
1
Ist das Aerforderlich?
Okx

Antworten:

8

JavaScript (ES6), 16 bis 15 Byte

n=>4&~0xA000004

Funktioniert mit A000004 (alle 0s) und A010709 (alle 4s).

Die vorherige 17-Byte-Lösung funktioniert mit A010850 bis einschließlich A010859:

n=>~-0xA010850%36

Die vorherige 25-Byte-Lösung funktioniert mit A010850 bis einschließlich A010871:

n=>"A010850".slice(5)-39
Neil
quelle
Dies zeigt sich nur (ich kenne OEIS nicht gut genug, um zu sehen, wie klug das ist: P)
TheLethalCoder
Seltsam - zwei Antworten begannen bei 25 Bytes und wurden beide in einer Minute auf 17 Bytes gebracht
pppery
@ppperry Heh, aber ich könnte Ihre Antwort portieren und es wären nur 15 Bytes ...
Neil
JS mit Jelly gefesselt ?! Sehr schön gemacht
Shaggy
@ Shaggy Nope; Eine neue kürzere Gelee-Antwort wurde veröffentlicht.
pppery
3

cQuents , 16 Bytes

=A000007//5#|A:0

Probieren Sie es online aus! , A000007 ,1,0,0,0,0...

=A000004//5#|A:0

Probieren Sie es online aus! , A000004 ,0,0,0,0,0...

Erläuterung

                    Implicit input A
=A000007            First item in the sequence equals A * 7
        //5                                                 intdiv 5 = 1
           #|A      n equals A
              :     Mode : (sequence): output nth item (1-based)
               0    Rest of the sequence is 0

                    Implicit input A
=A000004            First item in the sequence equals A * 4
        //5                                                 intdiv 5 = 0
           #|A      n equals A
              :     Mode : (sequence): output nth item (1-based)
               0    Rest of the sequence is 0

Vielen Dank an Conor O'Brien für 4//5 = 0und 7//5 = 1.

Wenn die Spezifikation flexibler wäre, wäre es O7A$und O4A$.

Stephen
quelle
2

Gleichstrom , 13 Bytes

Bearbeiten: Anscheinend listet OEIS die Kräfte von 0th bis 30th auf - ich habe gerade nach diesen Sequenzen gesucht und es stellt sich heraus, dass die ursprüngliche 13Bytelösung die golfreichste ist. Aber ich habe eine andere Lösung für nur 1Byte mehr gefunden, die für 9Sequenzen funktioniert .

Lösung für A000012 (Konstante 1):

?A000012 4%^p

Probieren Sie es online aus!

Lösung für A001477 (nicht negative ganze Zahlen):

?A001477 4%^p

Probieren Sie es online aus!

Lösung für A000290 (perfekte Quadratfolge ):

?A000290 4%^p

Probieren Sie es online aus!

Ungolfed / Erklärung

Diese Lösungen nutzen die Tatsache, dass als dcinterpretiert wird , so wird der Wert . Es nutzt ferner , daß die Sequenzen sind , und die zusammenfällt mit , und .A10A00147710001477n^0n^1n^210000012 % 4 == 010001477 % 4 == 110000290 % 4 == 2

Das sind also diese Sequenzen xyz(n) = n ^ (xyz % 4).

Command          Description          Example (3) 
?              # Push the input       [3]
 A000290       # Push sequence name   [3,10000290]
         4%    # Top %= 4             [3,2]
           ^   # Pop x,y & push y^x   [9]
            p  # Print the top        [9]

14-Byte-Lösung für 9 Sequenzen

Die Idee ist immer noch dieselbe, diesmal müssen wir eine machen % 97, um die richtige Leistung zu erhalten - sie funktioniert für die Sequenzen A010801 , A010802 , A010803 , A010804 , A010805 , A010806 , A010807 , A010808 und A010809 (dies sind die Sequenzen n^13, .. ., n^21).

Hier ist der erste:

?A010801 97%^p

Probieren Sie es online aus!

ბიმო
quelle
1
+1 für die Unterstützung von mehr als zwei Sequenzen!
Neil
1

Python 2, 25 17 Bytes

print'A000012'[5]

Funktioniert für A000004 und A000012. (Eingabe wird ignoriert, da die Sequenzen alle konstante Terme sind).

pppery
quelle
1

Befunge 98, 10 Bytes

#A000012$q

Funktioniert auch für A000004. Ausgabe per Exit-Code.

pppery
quelle
1

Gelee , 17 Bytes

“A000578”OS%⁵ạ6*@

Probieren Sie es online aus!

“A000578”OS%⁵ạ6*@  Main link
“A000578”          String
         O         Codepoints
          S        Sum (364 for A000290, 373 for A000578)
           %⁵      Modulo 10 (4 for A000290, 3 for A000578)
             ạ6    Absolute Difference with 6 (2 for A000290, 3 for A000578)
               *@  [left argument] ** [result of last link (right argument)]

Funktioniert auch mit A000290

HyperNeutrino
quelle
Gute Arbeit mit nicht konstanten Sequenzen.
AdmBorkBork
1

PowerShell , 23 Byte

+(0xA000012-eq160mb+18)

Probieren Sie es online aus!

Verwendet A000012 (die Sequenz mit allen Einsen) und A000004 (die Sequenz mit allen Nullen).

Nutzt mehrere nette Tricks. Wir verwenden 0xals hexadezimalen Operator die Sequenz, die uns gibt 167772178. Das wird verglichen, um zu sehen, ob -eqes 160mb+18mit der Verwendung des mbOperators ( 160mbis 167772160) identisch ist . Dieses boolesche Ergebnis wird dann als int mit +ausgegeben, um das richtige 1oder auszugeben 0. Beachten Sie, dass jede andere Sequenz im Code als A000012 0zur Ausgabe führt.

AdmBorkBork
quelle
1

Neim , 10 9 Bytes

A000012ᛄ>

Erläuterung:

A            Push 42
 000012      Push 4
 or
 A007395     Push 7395
        ᛄ     Modulo 2
         >    Increment

A000012 (alle) und A007395 (alle zwei)

Eine Funktion, die die Eingabe oben im Stapel übernimmt und die Ausgabe oben im Stapel belässt.

Probieren Sie es online aus!

Okx
quelle
0

Gaia , 9 Bytes

A000012₉/

Funktioniert mit A000012 und A000004 .

Versuchen Sie A000012!

Versuchen Sie A000004!

Erläuterung

A          Undefined (ignored)
 000012    Push 12
       ₉   Push 9
        /  Integer division, results in 1


A          Undefined (ignored)
 000004    Push 4
       ₉   Push 9
        /  Integer division, results in 0
Geschäftskat
quelle
Warum posten alle immer wieder A00004 und A00012?
pppery
@ppperry A000004 ist die Nullsequenz und A000012 ist die Einsenfolge. Teilen Sie die Zahlen einfach durch 9 und geben Sie das Ergebnis für immer aus.
Ingenieur Toast
0

Schale , 20 Bytes

Dieser gibt etwas interessantere Sequenzen zurück, wieder sind Lösungen 1 indiziert.

Dies funktioniert für A000040 (die Primzahlen):

!!i→"A000040"e:0İfİp

Probieren Sie es online aus!

Und dieses für A000045 (die Fibonacci-Zahlen):

!!i→"A000045"e:0İfİp

Probieren Sie es online aus!

Erläuterung

Dies nutzt die Tatsache aus, dass die letzte Ziffer der Sequenznamen eine andere Parität hat:

                      -- implicit input N
             e        -- construct a list with:
              :0İf    --   list of Fibonacci numbers (prepend 0)
                  İp  --   list of the prime numbers
  i→"Axxxxx?"         -- get the last character and convert to number,
 !                    -- use it as modular index (0 -> primes, 5 -> Fibonacci)
!                     -- get the value at the Nth index
ბიმო
quelle
0

AHK , 40 Bytes

a:=SubStr("A000004",6)//9
Loop
Send %a%,

Ausgabe: 0,0,0,0,0,0,0,0,0,0,0,0,...

a:=SubStr("A000012",6)//9
Loop
Send %a%,

Ausgabe: 1,1,1,1,1,1,1,1,1,1,1,1,...

Dies ist möglicherweise nicht der kürzeste Code, aber ich wette, es ist das kürzeste Sequenzpaar, das wir finden können. A000004 ist die Nullsequenz und A000012 ist die Einsenfolge . Teilen Sie die Zahlen einfach durch 9 und geben Sie das Ergebnis für immer aus.

Ingenieur Toast
quelle
0

QBIC , 28 Bytes

p=!_s@A000035`,-1|!?:%2+5-p

Dies wechselt zwischen den Sequenzen A000034 (1, 2, 1, 2, 1 ...) und A000035 (0, 1, 0, 1, 0, 1 ...)

Erläuterung

p=                  Set p to 
  !            !    A numeric representation of
   _s         |     a substring of
     @A000035`      our sequence code (either A0035 or A0034)
     ,-1            taking just one character from the right.
?:%2                PRINT <n> MOD 2 (gives us a either 0 or 1)
    +5-p            Plus 1 for seq A24 (5-4), or plus 0 for A35
steenbergh
quelle
0

Schale , 16 Bytes

Beide Lösungen sind 1indiziert.

Dies funktioniert für A000351 (Potenzen von 5):

!¡*i!6"A000351"1

Probieren Sie es online aus!

Und dieser für A000007 (Potenzen von 0):

!¡*i!6"A000007"1

Probieren Sie es online aus!

Erläuterung

Es wird verwendet, dass die Namen A000351 , A000007 die richtige Ziffer D an Position 6 enthalten, so dass die Reihenfolge lautet D^0,D^1,D^2,...:

                  -- implicit input N
   i!6"AxxxxDx"   -- get the right digit D and convert to number,
 ¡*            1  -- iterate (D*) infinitely beginning with 1,
!                 -- extract the value at Nth position
ბიმო
quelle