Verschiedene Aufgaben, gleiche Charaktere


36

In dieser Herausforderung musst du 4 verschiedene Aufgaben mit demselben Zeichensatz lösen. Sie können die Zeichen neu anordnen, jedoch keine Zeichen hinzufügen oder entfernen.

Der Gewinner ist die Einsendung, die alle Aufgaben mit der geringsten Anzahl von Zeichen löst. Alle Aufgaben müssen in derselben Sprache gelöst werden.

Beachten Sie, dass dies die kleinste Anzahl von Zeichen ist, nicht die kleinste Anzahl von eindeutigen Zeichen.

Aufgabe 1:

Geben Sie die ersten NZahlen jeder dritten zusammengesetzten Zahl aus . Der Codeblock unten zeigt die ersten 19 zusammengesetzten Zahlen in der ersten Reihe und jede dritte zusammengesetzte Zahl in der darunter liegenden Reihe.

4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30
4,       9,         14,         18,         22,         26,         30

Wenn N=5dann sollte der Ausgang sein 4, 9, 14, 18, 22. Sie müssen unterstützen 1<=N<=50.

Zusammengesetzte Zahlen sind positive Zahlen, die keine Primzahlen oder 1 sind.

Das Ergebnis für N=50ist:

4, 9, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 57, 62, 65, 69, 74, 77, 81, 85, 88, 92, 95, 99, 104, 108, 112, 116, 119, 122, 125, 129, 133, 136, 141, 144, 147, 152, 155, 159, 162, 166, 170, 174, 177, 182, 185, 188, 192

Schritt 2:

Ausgabe einer N-by-NMultiplikationstabelle. Sie müssen unterstützen1<=N<=20

Beispiel:

N = 4
1   2   3   4
2   4   6   8
3   6   9  12
4   8  12  16

Das Ausgabeformat ist optional, die folgende Ausgabe ist akzeptabel [[1,2,3,4],[2,4,6,8],[3,6,9,12],[4,8,12,16]].

Schritt 3:

Bestimmen Sie, ob eine Zahl eine Fibonacci-Zahl ist . Sie müssen positive NWerte bis zur standardmäßigen Ganzzahlgrenze Ihrer Sprache unterstützen. Wenn es sowohl 32-Bit-Ganzzahlen als auch 64-Bit-Ganzzahlen gibt, können Sie diejenige verwenden, die den kürzesten Code erfordert. Verwenden Sie beispielsweise intanstelle von, long intwenn Sie die Wahl haben. Sie können keine kleineren Ganzzahlen als 32-Bit auswählen, es sei denn, dies ist die Standardeinstellung (Sie können keine 8-Bit-Ganzzahlen verwenden, wenn die Standardeinstellung 32-Bit ist).

true/false, false/true, 1/0, 1/-1, a/bSind alle akzeptabel ausgegeben, solange sie konsistent ist.

Schritt 4:

Nehmen Sie Nals Eingabe und Ausgabe das Ergebnis von 1^1+2^2+3^3+...N^N. Sie müssen unterstützen 1<=N<=10.

Die 10 verschiedenen Ergebnisse sind:

1, 5, 32, 288, 3413, 50069, 873612, 17650828, 405071317, 10405071317

Das ist , also gewinnt die kürzeste Einsendung in jeder Sprache!

Mit diesem Stack-Snippet können Sie Ihre Lösung überprüfen. Es misst die Mindestanzahl von Zeichen, die erforderlich sind, um alle vier Lösungen einzuschließen, und zeigt die verbleibenden Zeichen an.


1
Binär: zwei Zeichen
Coredump

@coredump Ja, zwei einzigartige Charaktere ...
Stewie Griffin

Antworten:


12

Python, 88 87 Bytes

lambda n:[a for a in range(11*n)if any(a%b<1for b in range(2,a))][:3*n:3]#1,,,=====bd++
lambda n:[[a*b for b in range(1,n+1)]for a in range(1,n+1)]#,,::ybaaa(*i%n< =====2)d33f
f=lambda n,a=1,b=1:a<n and f(n,b,a+b)or n==a#2eerrrfo::((**iii11[[aannn+     ]]y))%33gg
f=lambda n,a=1:a<=n and a**a+f(n,a+1)#::ooeeiii]]      y))bbbgg,,rrrra((11[[nnnnf==2%33

Hat nicht zu viel Mühe in das Teilen von Charakteren oder die Golfs selbst gesteckt, wird dies mit ziemlicher Sicherheit zu schlagen sein.


1
Enthält es range(11*n)immer genug Verbundwerkstoffe?
FlipTack

1
@FlipTack Ja, 5*nist ausreichend.
Martin Ender

12

Jelly , 19 18 17 Zeichen

Aufgabe 1

Ḟþe*S
×5µḊḟÆRm3ḣ³

Probieren Sie es online!

Aufgabe 2

5µḊḟÆRm3ḣ³Ḟe*S
×þ

Probieren Sie es online!

Aufgabe 3

5µḊḟmḣþ*S
×3RÆḞ³e

Probieren Sie es online!

Aufgabe 4

×5ḊḟÆm3ḣ³þe
Rµ*ḞS

Probieren Sie es online!

Wie es funktioniert

Jede Zeile in einem Jelly-Programm definiert eine separate Verknüpfung (Funktion). Der letzte Link ist der Hauptlink und wird automatisch aufgerufen, wenn das Programm ausgeführt wird. Sofern dieser Hauptlink nicht irgendwie auf die anderen verweist, haben sie keine Auswirkung. Beachten Sie, dass selbst nicht aufgerufene Links möglicherweise keine Parserfehler enthalten.

Aufgabe 1

×5µḊḟÆRm3ḣ³  Main link. Argument: n

×5           Yield 5n.
  µ          Begin a new chain, with argument 5n.
   Ḋ         Dequeue; yield [2, ..., 5n].
     ÆR      Prime range; yield all primes in [1, ..., 5n].
    ḟ        Filter; remove the elements to the right from the ones to the left.
       m3    Pick every third element.
         ḣ³  Keep the first n results.

Aufgabe 2

Dies ist trivial: ×ist das Multiplikationsatom, und das schnelle þ(Tabelle) gilt ×für jede Kombination von Elementen im linken und im rechten Argument. Wenn es sich bei den Argumenten um Ganzzahlen handelt (die hier angegeben sind), werden sie auch in Range umgewandelt.

Aufgabe 3

×3RÆḞ³e  Main link. Argument: n

×3       Yield 3n.
  R      Range; yield [1, ..., 3n].
   ÆḞ    Fibonacci; yield [F(1), ... F(3n)].
     ³e  Test if n exists in the result.

Aufgabe 4

Rµ*ḞS  Main link. Argument: n

R      Range; yield [1, ..., n].
 µ     Begin a new chain with argument [1, ..., n].
   Ḟ   Floor; yield [1, ..., n].
  *    Yield [1**1, ..., n**n].
    S  Take the sum.

Schön zu sehen, ÆḞerweist sich bereits als nützlich!
Lynn

9

Mathematica, 60 Zeichen

Schritt 1: Verbundwerkstoffe

#/AFF^abcinoruy{};Select[Range[2,9#],!PrimeQ@#&][[;;3#;;3]]&

Aufgabe 2: Multiplikationstabelle

!29;F@FPQRS[];a^b;c[c[e]];eeegiilmnnotu;Array[3##&,{#,#}]/3&

Schritt 3: Fibonacci

##&;239;A/PS[]^e[];lmrtuy;{,};!FreeQ[Fibonacci@Range[3#],#]&

Schritt 4: Summe der Kräfte

!###&;23/39;A@F;F[P[Q[]]];Raabccegiilnnorrty;Sum[e^e,{e,#}]&

Jede Übermittlung besteht aus einer Reihe von Ausdrücken, die ignoriert werden, gefolgt von einer unbenannten Funktion, die die angegebene Aufgabe implementiert.

Ich habe ein einfaches CJam-Skript geschrieben, das unformatierte Lösungen "optimal" kombiniert, indem ein Kommentar vorangestellt wird. Ich habe dann drei Bytes zusätzlich gespart, indem ich jeden Kommentar manuell entfernt habe (was einige Neuanordnungen erforderte, um jeweils eine gültige Syntax zu erhalten). Mit dem Skript war es viel einfacher, einfache Variationen der Lösungen auszuprobieren, um festzustellen, ob sie die Gesamtpunktzahl beeinträchtigen würden. Fühlen Sie sich frei, das Skript selbst zu verwenden.


Ich habe einen Kommentar, aber es geht nicht um Ihren Code selbst: P. (Schöne Antwort, übrigens). Ihr CJam-Skript übersieht einen einfachen Fehler: Wenn ich abund baals Skripte eingebe , gibt es mir (**)abund (**)ba, anstelle von abund ba.
HyperNeutrino

@AlexL. Ja, es wird auch nicht die Tatsache berücksichtigt, dass (**)selbst verwendet werden könnte, um einige Zeichen zu verdecken, wenn sie in einem der anderen Programme verwendet würden.
Martin Ender

9

MATL , 29 28 26 Zeichen

Aufgabe 1 (jede dritte zusammengesetzte Zahl)

6*:tZp~)G:3*q)%G"$]vwm^sl+

Probieren Sie es online!

Aufgabe 2 (Multiplikationstabelle)

:l$*%6*tZp~)G:3q)G"]vwm^s+

Probieren Sie es online!

Aufgabe 3 (Fibonacci-Detektor)

l6Zp~G:"3q$t+]vGwm%):*)^s*

Dies zeigt 1/ 0für Fibonacci / Nicht-Fibonacci an.

Probieren Sie es online!

Aufgabe 4 (Summe der Kräfte)

:t^s%6*Zp~)G:3*q)G"$]vwml+

Probieren Sie es online!

Prüfen

Dieses Programm gibt die vier Zeichenfolgen ein und zeigt sie sortiert an, um visuell zu überprüfen, ob dieselben Zeichen verwendet werden.

Erklärungen

%ist das Kommentarsymbol. Alles zu seiner Rechten wird ignoriert.

Aufgabe 1 (jede dritte zusammengesetzte Zahl)

6*    % Input N. Multiply by 6
:     % Range [1 2 ... 6*N]. This is enough because every even number is composite,
      % so this contains at least 3*N composite numbers
t     % Duplicate
Zp    % Isprime
~     % Negate
)     % Use as index to select composite numbers, including 1, from [1 2 ... 6*N]
G:    % Push [1 2 ... N]
3*q   % Multiply by 3 and subtract 1: gives [2 5 ... 3*N-1]
)     % Pick those composite numbers. Implicitly display

Aufgabe 2 (Multiplikationstabelle)

:     % Input N. Range [1 2 ... N]
l     % Push 1
$     % Specify that next function will take 1 input
*     % Product of array. With 1 input it produces all pair-wise products
      % Implicitly display

Aufgabe 3 (Fibonacci-Detektor)

l     % Push 1
6     % Push 6
Zp    % Isprime. Gives false
~     % Negate. Gives true, or 1
G:    % Push [1 2 ... N], where N is the input
"     % For each
  3q  %   3, subtract 1
  $   %   Specify that next function will take 2 inputs
  t   %   Duplicate the top two elements of the stack
  +   %   Add
]     % End
v     % Vertically concatenate the entire stack. This produces a column vector
      % with a sufficient amount of Fibonacci numbers
G     % Push input N
w     % Swap
m     % Ismember. Gives true if input is in the vector of Fibonacci numbers
      % Implicitly display

Aufgabe 4 (Summe der Kräfte)

:     % Implicitly input N. Push [1 2 ... N]
t     % Duplicate
^     % Power, element-wise
s     % Sum of array. Implicitly display

Als ich Hey MATL would be perfect for this!mir die Herausforderung zum ersten Mal ansah, dachte ich, du hast mich geschlagen. +1
DJMcMayhem

@ DJMcMayhem Sorry, ich neige dazu, viel zu antworten. Ping mich das nächste Mal an und ich werde es unterlassen, wenn du daran arbeitest :-) Wie auch immer, warum nicht weitermachen? Vielleicht kannst du das übertreiben
Luis Mendo

3
@DJMcMayhem, bitte schreibe auch eine Antwort, auch wenn du es nicht schaffst, Luis zu übertreffen. Ich wünschte, mehr Leute würden Antworten in Sprachen posten, die bereits verwendet werden, auch wenn sie es nicht schaffen, die erste zu übertreffen.
Stewie Griffin

@stewiegriffin Haha, okay sicher. Ich habe noch keine gültige Antwort, aber wenn ich eine bekomme (und es ist ausreichend anders), werde ich sie posten.
DJMcMayhem

7

Perl 6 , 61 Bytes

{(4..*).grep(!*.is-prime)[0,3...^*>=$_*3]}#$$&+1==>X[]__oot{}
{[X*](1..$_,!0..$_).rotor($_)}#&***+-..334===>>[]^eegiimpps{}
{(1,&[+]...*>=$_)[*-!0]==$_}#$()**....334>X^_eegiimoopprrst{}
{[+]((1..$_)>>.&{$_**$_})}#!**,-....0334===X[]^eegiimoopprrst

Der zweite kehrt zurück, ((1,2,3,4),(2,4,6,8),(3,6,9,12),(4,8,12,16))wenn er gegeben ist4

Perl 6 hat nicht wirklich eine maximale Ganzzahl, aber die dritte arbeitet sofort mit einer Eingabe von 15156039800290547036315704478931467953361427680642. Die einzigen begrenzenden Faktoren wären Gedächtnis und Zeit.

Andernfalls werden sie alle "sofort" für Eingaben ausgeführt, die weit über das erforderliche Maß hinausgehen.

Probieren Sie es online aus


6

JavaScript (ES6), 101 100 95 93 91 Byte

(n,r=[],a=(y,m)=>n?y%m?a(y,++m):a(y+1,2,y==m||n--%3||r.push(y)):r)=>a(4,2,n*=3)//>....p*A&&
n=>[...Array(n)].map((r,y,m)=>m.map((s,n)=>y*++n,y+=1))//22334(,,,,===ayy)??%%::||||--uh*&&
r=(n,y=1,a=2)=>n==y||n>y&&r(n,a,y+a)//2334((((,,,,r=[]ayymmmm))))>??%%++::||--.....ppush**A
r=y=>y&&y**y+r(y-1)//22334(((((nnnn,,,,,,,,r=====[]aaaaymmmm)))))>>??%%++::||||-.....ppushA

Bearbeiten: 1 Byte gespeichert, 0da keine Fibonacci-Nummer unterstützt wird. 5 Bytes plus weitere 2 Bytes (1 dank @Arnauld) durch Umbenennen von Variablen gespeichert. 2 Bytes durch Umschalten zwischen +1, ++und gespeichert +=1.


Durch Ersetzen aller Vorkommen der cVariablen durch Asollte ein Byte gespart werden.
Arnauld

(Ich wollte vorschlagen , dass Sie auch ersetzen können dmit y, sondern dist in der aktuellen Version nicht definiert, so dass Sie wahrscheinlich , dass die ersten korrigieren mögen)
Arnauld

@Arnauld Danke, dass du darauf hingewiesen hast, aber ich habe es geschafft, das Problem zu beheben und ein weiteres Byte durch Umbenennen in azu speichern m.
Neil

4

MATL , 30 Zeichen

Der Zeichensatz, mit dem ich ging, ist:

!%))*+001233::<=GGQZ\]^`pstvyy~

Ich konnte die andere MATL-Antwort nicht übertreffen, aber ich hatte Spaß daran, diese Lösung zu finden.

Aufgabe 1:

Dritte zusammengesetzte Zahlen.

4t^:QtZp~)G3*:3\1=)%!`yy+<]vGs

Probieren Sie es online!

Schritt 2:

Multiplikationstabelle. Aufgrund der Funktionsweise von MATL definitiv die einfachste Aufgabe

:t!*%4QZp~)G3:3\1=)`yy+<]vGs^t

Probieren Sie es online!

Schritt 3:

Fibonacci-Tester. Gibt eine positive Ganzzahl (1 oder 2) für wahrheitsgemäße Eingaben und 0 für falsche Eingaben aus.

1t`yy+tG<]vG=s%4:QZp~)3*:3\)!^

Probieren Sie es online!

Schritt 4:

Summe der Kräfte

:t^s%1`yy+tG<]vG=4QZp~)3*:3\)!

Probieren Sie es online!

Ich werde später eine ausführlichere Erklärung veröffentlichen, aber im Moment sollten Sie beachten, dass dies %das Kommentarzeichen ist, daher sind die Programme wirklich:

4t^:QtZp~)G3*:3\1=)
:t!*
1t`yy+tG<]vG=s
:t^s

4

PowerShell , 95 bis 94 Byte

( TimmyD schon wieder meinen Speck)

Aufgabe 1:

(""..999|?{'1'*$_-match'^(?=(..+)\1+$)..'})[(0..("$args"-1)|%{$_*3})]#|$$$$===ss%``iiex!!nnnq;

Probieren Sie es online!


Schritt 2:

($s=1.."$args")|%{"`$s|%{$_*`$_}"|iex}#0113999((((......??''''*$$$--match^===++))))\[]i!!nnnq;

Probieren Sie es online!


Schritt 3:

!!(($i="$args")..($s=1)|?{($n=($s+=$n)-$n)-eq$i})#0113999......||?{''''**__match^+\}[""%%]``x;

Probieren Sie es online!


Schritt 4:

"$args"..1|%{$s+="$_*"*$_+1|iex};$s#013999(((((......|??{''''$$$--match^===)))))\}[%]``i!!nnnq

Probieren Sie es online!


Oh, das stringification "$args"statt $args[0]ist brillant. Ich werde das von jetzt an benutzen.
AdmBorkBork

@TimmyD Ja, ich habe das für die Einsparungen von Einzelbytes für alles mit einem einzelnen Parameter verwendet.
Briantist

@ TimyD guter Punkt! Ich müsste sie alle neu schreiben, um sicherzugehen, dass ich sie nochmals besuchen und anwenden könnte. Als ich alle 4 beendet hatte, war ich im Hinblick auf die Optimierung ziemlich durchgeknallt.
Briantist

Nun, ich wollte die TIO-Links und so weiter machen, aber FINE @TimmyD Ich werde aufhören faul zu sein und deinen großzügigen Vorschlag verwenden, der überhaupt nicht so viel Arbeit macht, wie ich mir vorstelle! (bearbeitet) :-p
briantist

Sie können die ;von Task 4 entfernen, indem Sie die Berechnung mit manipulieren ("$args"..1|%{$s+="$_*"*$_+1|iex})-(-$s), um ein weiteres Gesamtbyte zu speichern.
AdmBorkBork

3

Haskell , 77 76 Zeichen

m n=[[x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]!!y|y<-[1,4..3*n]]--2 n===y();^
s n=[(*y)<$>[1..n]|y<-[1..n]]--0112234mmm  ====[[[xxxx||<<--..]]],,/uod!!y;^
n x|x<2=1|1<3=sum(n<$>[x-1,x-2]);d y=[0|m<-[1..y],y==n m]--4[[[....]]]/o!!*^
o n=sum[x^x|x<-[1..n]]--01112234mm  n====[[[[x||<<<--....]]]],,/d$>!!yyy*();

Probieren Sie es online!

--Beginnt ein Zeilenkommentar, so sind alle vier Programme von der Form <program>--<unused chars>.

Aufgabe 1:

m n=[[x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]!!y|y<-[1,4..3*n]]

Das längste Programm. [x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]ergibt eine unendliche Liste zusammengesetzter Zahlen plus einen Anfang, 1der die 0-Indizierung korrigiert. Verwendung:

Prelude> m 5
[4,9,14,18,22]

Schritt 2:

s n=[(*y)<$>[1..n]|y<-[1..n]]

Verwendung:

Prelude> s 5
[[1,2,3,4,5],[2,4,6,8,10],[3,6,9,12,15],[4,8,12,16,20],[5,10,15,20,25]]

Schritt 3:

n x|x<2=1|1<3=sum(n<$>[x-1,x-2]);d y=[0|m<-[1..y],y==n m]

Returns [0]für truthy und []für falsy. Verwendung:

Prelude> d 5
[0]
Prelude> d 6
[]

Schritt 4:

o n=sum[x^x|x<-[1..n]]

Verwendung:

Prelude> o 5
3413

3

05AB1E , 21 Bytes

Aufgabe 1

3ÅFOL¦DâPÙï{3ôø¬¹£qåm

Probieren Sie es online!

Aufgabe 2

LDâP¹ôq3m¦Ùï{3ø¬£ÅFåO

Probieren Sie es online!

Aufgabe 3

3mÅF¹åqL¦DâPÙï{3ôø¬£O

Probieren Sie es online!

Aufgabe 4

LDmOq3¦âPÙï{3ôø¬¹£ÅFå

Probieren Sie es online!

Erklärungen

Bei allen Tasks wird das qProgramm beendet, sodass der folgende Code niemals ausgeführt wird.

Aufgabe 1

Dies ist das größte Byte-Schwein. Eine kleine Verbesserung hier könnte viel bewirken.

3ÅFO                 # sum the first 4 fibonacci numbers
    L¦               # range [2 ... above]
      Dâ             # cartesian product with itself
        P            # product
         Ù           # remove duplicates
          ï{         # sort
            3ô       # split in pieces of size 3
              ø      # transpose
               ¬     # get the first lits
                ¹£   # get the first input-nr elements of the list

Aufgabe 2

L       # range [1 ... input]
 D      # duplicate
  â     # cartesian product
   P    # product
    ¹ô  # split in pieces of input size

Aufgabe 3

3m      # input**3
  ÅF    # get a list of that many (+1) fibonacci numbers
    ¹å  # check if input is in that list

Aufgabe 4

L     # range [1 ... input]
 D    # duplicate
  m   # elementwise power of ranges
   O  # sum

1

Ruby, 83 82 80 78 Zeichen

->m{'*+-=';[*0..m-1].map{|b|(4..516).select{|p|(2...p).any?{|n|p%n==0}}[3*b]}}
->n{'()%**+--......00123456==?[[]]clmnsty{||}';(b=1..n).map{|e|b.map{|p|e*p}}}
->m{'%+-......001236bclnnpt[[]]{{||||}}';(1..e=m*m).any?{|p|(p*p-5*e).abs==4}}
->n{'%*.......023456=?[]abbceelnsty{{||||}}';((m=0)..n).map{|p|m+=p**p}[-1]-1}

Hinweis: Der Fibonacci-Zahlendetektor verwendet die auf Wikipedia beschriebene Methode des perfekten Quadrats: https://en.wikipedia.org/wiki/Fibonacci_number#Recognizing_Fibonacci_numbers


Wenn Sie Zeichen brennen müssen, verwenden Sie am Ende einen Kommentar anstelle einer Zeichenfolge. Es speichert Sie 2 Zeichen pro Zeile '';vs#
Alexis Andersen

Danke, aber für mich fühlt es sich an wie Schummeln.
GB
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.