ist es möglich, Scheme-Funktion (eine Funktion - es wichtig) zu implementieren, die eine Liste und k erhalten, und die Permutationen in der Größe von k abrufen, zum Beispiel: (1 2 3) , k = 2 ergibt {(1,1), (1,2), (1,3), (2,1), (2,2), ...} (9 Optionen).Erstellen Sie k-Größe Permutationen, ohne weitere Funktionen zu definieren
-2
A
Antwort
-1
Es ist möglich, alles zu tun, ohne etwas zu definieren, solange Sie Lambda haben:
(define (fib n)
;; bad internal definition
(define (helper n a b)
(if (zero? n)
a
(helper (- n 1) b (+ a b))))
(helper n 0 1))
Mit Z combinator:
(define Z
(lambda (f)
((lambda (g)
(f (lambda args (apply (g g) args))))
(lambda (g)
(f (lambda args (apply (g g) args)))))))
(define (fib n)
((Z (lambda (helper)
(lambda (n a b)
(if (zero? n)
a
(helper (- n 1) b (+ a b))))))
n 0 1))
Jetzt sind wir nie Z Aufruf so können wir den Wert ersetzen Z für Z in der Funktion und es wird das gleiche tun:
(define (fib n)
(((lambda (f)
((lambda (g)
(f (lambda args (apply (g g) args))))
(lambda (g)
(f (lambda args (apply (g g) args))))))
(lambda (helper)
(lambda (n a b)
(if (zero? n)
a
(helper (- n 1) b (+ a b))))))
n 0 1))
Dort gehen Sie, Sa ved von Alonzo Church.
-1
Es ist nicht nur möglich, es ist einfach. Verwenden Sie einfach einen loop
:
(define permute
(lambda (k lst)
(let loop ((result (map list lst))
(i 1))
(if (= i k)
result
(loop
;; code to add each element of the original list
;; to each element of the result list
(1+ i))))))
Verwandte Themen
- 1. Wie definieren Sie Funktionen, ohne sie zu exportieren?
- 2. Ändern Sie Funktionen in Python, anstatt sie neu zu definieren?
- 3. Algorithmus für Permutationen ohne Wiederholung?
- 4. Definieren Sie stückweise Funktionen in Julia
- 5. Javascript-Objekt erstellen, ohne die Schlüssel explizit zu definieren? Ich
- 6. Definieren von Funktionen Scheme-Stil in Common Lisp, ohne defun
- 7. Deklarieren Sie eine Struktur in C, ohne sie zu definieren
- 8. Idiomatische Art, konstante Funktionen zu definieren
- 9. Weitere Privilegierungsringe erstellen
- 10. definieren Python Funktionen zur Laufzeit
- 11. Erstellen von Permutationen mit Wiederholungen in Python
- 12. Beziehung ohne Fremdschlüssel definieren
- 13. Erstellen einer verketteten Liste ohne eingebaute Funktionen
- 14. Hinzufügen Funktion weitere Funktionen in der js-Datei zu deaktivieren
- 15. Weitere Variablen mit Variablen erstellen
- 16. Wie finden Sie Permutationen für String-Arrays ohne eigenes Array?
- 17. Definieren und Aufrufen von Funktionen
- 18. TSQL Temp-Tabelle (oder Tabellenvariable) definieren, ohne Schema zu definieren?
- 19. So lesen Sie vorhandene Textdateien, ohne den Pfad zu definieren
- 20. Definieren Sie Klassen ohne das Klassenschlüsselwort in Typoskript zu verwenden
- 21. alle möglichen Permutationen ohne Wiederholung der Wert
- 22. Erstellen Sie ein horizontales Scroll-Div, ohne eine bestimmte Breite zu definieren?
- 23. Wie kann ich eine Klasse erstellen, ohne sie in JavaScript zu definieren?
- 24. Funktionen definieren mit foldl foldr
- 25. Definieren von Funktionen für mehrere Datensätze
- 26. Erstellen Sie verschiedene Funktionen dynamisch
- 27. Funktionen in AngularJS definieren Konstanten
- 28. Erstellen von Permutationen durch Auswahl aus Arrays
- 29. Definieren eines Wörterbuchmitgliedschaftsvergleichs ohne IN zu überladen?
- 30. Funktionen in Python rekursiv definieren
Natürlich ist es. Was hast du probiert? –
Was meinst du mit definieren mehr Funktionen? Du meinst, du willst nur einen globalen darstellen, oder kannst du auch keine lokalen Funktionen erstellen? Ist es in Ordnung mit anonymen Funktionen? Sie werden höchstwahrscheinlich keine Antworten erhalten, die Code enthalten, es sei denn, Ihre Frage zeigt Aufwand. Zeig uns, was du bisher versucht hast! Verwenden Sie die Schaltfläche Bearbeiten. – Sylwester