Ihr Unternehmen ist gerade dabei, ein Projekt zu starten, und Sie haben sich zum ersten Mal dafür entschieden, einen funktionalen Programmcode zu verwenden. Ihr Chef ist jedoch sehr zurückhaltend und möchte keine eingebauten Funktionen verwenden. Sie müssen die Hauptfunktionen selbst implementieren. Insbesondere müssen Sie die Funktionen schreiben: Map
, Nest
, Apply
, Range
, Fold
und Table
in einer Sprache auf Ihrer Wahl. Der Chef ist sehr beschäftigt und möchte die Programme so kurz wie möglich halten, damit er keine Zeit mit Lesen verschwendet. Er möchte auch, dass Sie keine Schleifen verwenden. Daher wird die Anzahl der Bytes um 10% reduziert, wenn Sie keine Schleifen verwenden.
Die detaillierten Anforderungen der Funktionen sind nachfolgend aufgeführt:
Karte
Die Map
Funktion akzeptiert zwei Parameter: f
und list
wo f
ist eine Funktion und list
ist eine Liste von Werten. Es sollte das f
auf jedes Element angewendete von zurückgeben list
. Daher wird es als solches funktionieren:
Map(f,{a,b,c})
kehrt zurück
{ f(a), f(b), f(c) }
und
Map(f, {{a,b},{b,c}})
kehrt zurück
{ f({a,b}), f({b,c})}
Nest
Die Nest
Funktion nimmt drei Parameter als auch: f
, arg
, times
wobei f
eine Funktion ist, arg
ist sein Ausgangsargument, und times
ist , wie oft die Funktion angewandt wird. Es sollte einen Ausdruck mit f
angewendeten times
Zeiten an zurückgeben arg
. Daher wird es als solches funktionieren:
Nest(f, x, 3)
kehrt zurück
f(f(f(x)))
und
Nest(f, {a,b}, 3)
kehrt zurück
f(f(f({a,b})))
Sich bewerben
Die Apply
Funktion akzeptiert zwei Parameter: f
und args
wo f
ist eine Funktion und args
eine Liste. Es sollte gelten , f
um die args
. Deshalb:
Apply(f, {a,b,c})
kehrt zurück
f(a,b,c)
Reichweite
Die Range
Funktion nimmt eine ganze Zahl r
und gibt die ganzen Zahlen bis zu dieser Zahl aus. Deshalb:
Range(5)
kehrt zurück
{ 1, 2, 3, 4, 5}
Falten
Die Fold
Funktion nimmt drei Parameter f
, arg
, others
wo f
eine Funktion ist, arg
ist einfach Parameter und others
eine Liste. Es wird so funktionieren:
Fold(f, x, {a, b, c, d})
kehrt zurück
f(f(f(f(x,a),b),c),d)
Tabelle
Die Tabellenfunktionen sollten eine Funktion f
und einen Parameter enthalten, die iterator
in der folgenden Form aufgerufen werden: {iMin, iMax}
where iMin
und iMax
are integer. Sie sollten sich f
innerhalb des angegebenen Bereichs bewerben . Deshalb:
Table(f, {0, 5})
kehrt zurück
{f(0), f(1), f(2), f(3), f(4), f(5)}
Ich habe die Definition dieser Funktionen von der Seite zur funktionalen Programmierung in Mathematica übernommen. Gehen Sie also dorthin, wenn Sie weitere Anleitungen benötigen. Beachten Sie, dass Sie nicht alle auf dieser Seite gezeigten Funktionen implementieren müssen, sondern nur die in diesem Beitrag beschriebenen.
Standard-Regelungslücken sind wie gewohnt unzulässig.
Falls Ihre Sprache nicht zulässt, dass Funktionen als Argumente übergeben werden, müssen Sie diese Funktion implementieren und in Ihre Antwort einfügen. Die Byteanzahl dieser Operation wird jedoch nicht zur Gesamtsumme addiert.
Dies ist Codegolf, also gewinnt der kürzeste Code. Viel Glück!!!
Table
das hier funktioniert. Soll Ihr Beispiel seinTable(f, {x, 0, 5})
? Ich verstehe auch überhaupt nicht den Zweckx
, da es nur die Funktion auf den Bereich anwendet.