Bijektive Abbildung (Selbstabbildung) mithilfe des %-Operators in JS/ES
-
@Anon-81275 sagte in Bijektive Abbildung (Selbstabbildung) mithilfe des %-Operators in JS/ES:
@wob Ginge die Ausgabe eigentlich auch ohne die eckigen Klammern ( [ und ] ), oder ist man in Python an diesen... syntaktischen Zucker gebunden? Ich habe explizit nach einer Funktion gefragt, also nach Einzelwerten bzw. einer Zahlenreihe, und nicht nach einem Klammerintermezzo.
Das
distributeist absichtlich so, wie es ist, da es eigentlich für was anderes da ist, nämlich um m Dinge auf n kleinere Container zu verteilen. Das ist also keine Funktion, die irgendwas berechnet, sondern da werden wirklich 4 Sequenzen für diese kleinen Container erzeugt (Beziehungsweise es wird ein Objekt erstellt, das dann diese Sequenzen generieren kann; die eigentliche Erzeugung ist in dem[*c], wo dieses Generatorobjekt durch eine Liste gejagt wird). Das wird wirklich verteilt, nicht berechnet. Man hätte da auch beliebig andere Objekte anstatt der Zahlen von 0 bis 17 reinwerfen können. Das heißt, man kann nicht wie bei einer Funktion fragen "Was wäre der Wert vonf(i, n, m)?" und direkt eine Antwort bekommen, sondern müsste diese Generatoren mindestens bis zum i-ten Element auswerten, um das zu erfahren.Das liegt aber nicht an Python, sondern am Einsatzzweck von
distribute. Printen können wir natürlich auch ohne die Klammern, wir müssen bloß die Generatoren anders auswerten, so dass sie alle nacheinander in eine lange Sequenz gepackt werden. Da gibt es natürlich auch einitertooldafür, damit wir uns diesen schweren Einzeiler (der vermutlich kürzer wäre als der itertools Call) sparen können:from more_itertools import distribute import itertools r = distribute(4, "abcdefghijklmnopqr") # Werfen wir Buchstaben rein, nur um zu zeigen, dass das auch geht print(*itertools.chain.from_iterable(r))a e i m q b f j n r c g k o s d h l p
-
@SeppJ Danke. Dieses "Objekt" (... bin in Python nicht kapitelfest) zwischenspeichern ginge auch.
-
@Anon-81275 sagte in Bijektive Abbildung (Selbstabbildung) mithilfe des %-Operators in JS/ES:
@SeppJ Danke. Dieses "Objekt" (... bin in Python nicht kapitelfest) zwischenspeichern ginge auch.
Tatsächlich Nein. Das ist ein Generator. Der ist zur einmaligen Verwendung. Der erzeugt einmalig die Sequenz, danach ist er am Ende. Keine Vor- oder Zurückspringen, und kann auch nicht auf den Anfang zurück gesetzt werden. Wenn man es mehrmals benutzen will, muss man sich die erzeugte Sequenz selbst speichern.
-
@SeppJ sagte in Bijektive Abbildung (Selbstabbildung) mithilfe des %-Operators in JS/ES:
Da gibt es natürlich auch ein itertool dafür, damit wir uns diesen schweren Einzeiler (der vermutlich kürzer wäre als der itertools Call) sparen können:
Ab 3.15 geht auch
print(*(*x for x in r)), davor müsste man sowas wieprint(*(y for x in r for y in x))schreiben.
-
@SeppJ Ok. Die Speicherplatzanforderung wäre immer
n. Daran hat man offenbar nicht gedacht oder es fortan nicht für wichtig befunden. Bei einer Funktion wäre dieser natürlich nur1.Aber Thema gelöst. Ich kann jetzt aus einer Menge von
nFarben, die sich jeweils kaum unterscheiden (HSV-Farbkreis...), jeweils die nächste Farbe auswählen, die sich deutlich zur vorherigen unterscheidet.function interleaveShiftIndex(totalSteps, offset, currentIndex) { let offset2 = Math.ceil(totalSteps / offset); let virtualIndex = 0; let validCount = 0; while (true) { // <- ja, hier ist leider noch eine Schleife... let row = Math.floor(virtualIndex / offset2); let mod = virtualIndex % offset2; let target = mod * offset + row; if (target < totalSteps) { if (validCount === currentIndex) { return target; } validCount++; } virtualIndex++; } } function getNextHslColorString(currentIndex, hslLightness) { let totalSteps = 18; let offset = 4; currentIndex = interleaveShiftIndex(totalSteps, offset, currentIndex); let hue = Math.round(currentIndex / totalSteps * 360.0); let hslSaturation = 50; return `hsl(${hue}, ${hslSaturation}%, ${hslLightness}%)`; }getNextHslColorString(i+1, ...)gibt jetzt also einen Farbwert zurück, der sich deutlich vom vorherigen Farbwert füriunterscheidet. Erst abi=5oderi=6würde ein Farbewert zurückgegeben werden, der ähnlich zum allerersten Farbwert wäre.
-
@wob sagte in Bijektive Abbildung (Selbstabbildung) mithilfe des %-Operators in JS/ES:
davor müsste man sowas wie print(*(y for x in r for y in x)) schreiben
Furchtbar.

-
@wob sagte in Bijektive Abbildung (Selbstabbildung) mithilfe des %-Operators in JS/ES:
Ab 3.15 geht auch print(*(*x for x in r)),
Ich kann es kaum erwarten, bis das in 2 Jahren zu meiner Plattform durchsickert

-
Die Frage wurde letztens auch im ComputerBase Forum diskutiert: https://www.computerbase.de/forum/threads/wo-ist-die-13.2274439/
Scheint wohl ein heißes Thema zu sein aktuell.
-
@InternalHigh sagte in Bijektive Abbildung (Selbstabbildung) mithilfe des %-Operators in JS/ES:
ComputerBase Forum
Darauf habe ich keinen Zugriff. Sperren neuerdings willkürlich Leute. Aber Verfahren läuft.
-
Was für Verfahren xD
Gibt aber noch mehr Diskussionen zu dem Thema z.B. https://www.java-forum.org/thema/duplikate-in-funktionsbildmenge.205752/
-
@InternalHigh sagte in Bijektive Abbildung (Selbstabbildung) mithilfe des %-Operators in JS/ES:
Gibt aber noch mehr Diskussionen zu dem Thema
Ich gestehe, beides von mir. Leider gabs in allen Themen (außer hier
) keine adäquate Antwort.@InternalHigh sagte in Bijektive Abbildung (Selbstabbildung) mithilfe des %-Operators in JS/ES:
Was für Verfahren xD
Laut dem Bundesgerichtshof (BGH) gibt es ab einer bestimmten Größe ein Recht auf Teilhabe bei Online-Plattformen. Personen ohne triftigen Grund ein virtuelles Hausverbot aufzulegen, widerspricht jedoch der gängigen Rechtsprechung.
Nun sind es aber zwei unterschiedliche Dinge, Recht zu haben und Recht zu bekommen. Ich befürchte, dass ich ohne anwaltliche Hilfe dabei nicht weiterkomme.
-
Jetzt geht das wieder los...