Vier ganzzahlige Folgen
In dieser Challenge testen Sie vier verschiedene Eigenschaften einer positiven Ganzzahl, die durch die folgenden Sequenzen gegeben sind. Eine positive ganze Zahl N ist
- Perfekt ( OEIS A000396 ), wenn die Summe der richtigen Teiler von N gleich N ist . Die Sequenz beginnt mit 6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128 ...
- refactorable ( OEIS A033950 ), wenn die Anzahl der Teiler von N ein Teiler von N . Die Sequenz beginnt mit 1, 2, 8, 9, 12, 18, 24, 36, 40, 56, 60, 72, 80, 84, 88, 96, 104, 108, 128 ...
- praktisch ( OEIS A005153 ), wenn jede ganze Zahl 1 ≤ K ≤ N eine Summe einiger verschiedener Teiler von N ist . Die Sequenz beginnt mit 1, 2, 4, 6, 8, 12, 16, 18, 20, 24, 28, 30, 32, 36, 40, 42, 48, 54, 56 ...
- stark zusammengesetzt ( OEIS A002128 ), wenn jede Zahl 1 ≤ K <N streng weniger Teiler als N hat . Die Sequenz beginnt mit 1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040 ...
Vier Programme
Ihre Aufgabe ist es, vier Programme zu schreiben (dh vollständige Programme, Funktionsdefinitionen oder anonyme Funktionen, die E / A nach einer der Standardmethoden ausführen ). Jedes Programm soll das Mitgliedschaftsproblem einer dieser Sequenzen lösen. Mit anderen Worten, jedes Programm nimmt eine positive ganze Zahl N ≥ 1 als Eingabe und gibt einen Wahrheitswert aus, wenn N in der Sequenz ist, und einen falschen Wert, wenn nicht. Sie können davon ausgehen, dass N innerhalb der Grenzen des ganzzahligen Standardtyps Ihrer Programmiersprache liegt.
Die Programme müssen folgendermaßen verknüpft sein. Es gibt vier ABCD
solche Saiten
AC
ist das Programm, das perfekte Zahlen erkennt.AD
ist das Programm, das refactorable Zahlen erkennt.BC
ist das Programm, das praktische Zahlen erkennt.BD
ist das Programm, das sehr zusammengesetzte Zahlen erkennt.
Wertung
Ihre Punktzahl ist die Gesamtlänge (in Byte) der Zeichenfolgen ABCD
, oder mit anderen Worten die Gesamtbytezahl der vier Programme geteilt durch zwei. Die niedrigste Punktzahl in jeder Programmiersprache ist der Gewinner. Es gelten die Standardregeln für Code-Golf .
Wenn die vier Saiten sind zum Beispiel a{
, b{n
, +n}
und =n}?
, dann die vier Programme sind a{+n}
, a{=n}?
, b{n+n}
und b{n=n}?
, und das Ergebnis ist 2 + 3 + 3 + 4 = 12.
Antworten:
JavaScript (ES6), 46 + 55 + 6 + 36 =
282274...158143 BytesEIN:
B:
C:
D:
Das Ergebnis ist eine 4 anonyme Funktionen , die give truthy / falsy Werte für ihre jeweiligen Eingänge (
AC
,AD
undBC
givetrue
/false
,BD
gibt1
/0
).Testschnipsel
Code-Snippet anzeigen
quelle
Jelly , 8 + 17 +
21 + 2 =2928 BytesEIN:
B:
C:
D:
Für praktische Zahlen (BC)
0
ist falsch und jedes andere Ergebnis ist wahr.AC und BC sind vollständige Programme, da sie nicht als Funktionen wiederverwendbar sind.
quelle
ÆDŒPS€ḟ@RṆµṖÆd<ÆdẠµ
arbeitet als B für zwei Bytes (und bewirkt, dass BC nur wie die anderen 0 und 1 zurückgibt).ŒP
mitŒṖ
. Schade! Funktioniert es, wenn Sie das beheben? (zB probiere mein neues Edit aus) Es ist sowieso nicht so einfach zu testen, deshalb habe ich noch keinen TIO-Link eingefügt.Haskell , 69 + 133 + 3 + 3 = 208 Punkte
EIN:
B:
C:
D:
Probieren Sie es online!
Ja, es ist ziemlich billig, aber ich bin nicht schlau genug für eine coolere Lösung. : P
quelle
subsequences
[x|x<-[1..n],mod n x<1]
ist kürzer alsfilter((<1).mod n)[1..n]
.