suchen

Verschachtelte Schönheit

Dec 26, 2024 pm 10:22 PM

Nested beauty

Wöchentliche Herausforderung 300

Jede Woche verschickt Mohammad S. Anwar die Weekly Challenge, eine Chance für uns alle, Lösungen für zwei wöchentliche Aufgaben zu finden. Meine Lösungen werden zunächst in Python geschrieben und dann in Perl konvertiert. Es ist eine großartige Möglichkeit für uns alle, etwas Programmieren zu üben.

Herausforderung, meine Lösungen

Da dies die dreihundertste Herausforderung ist, möchte ich Mohammad persönlich für all die Arbeit danken, die er jede Woche im Namen aller im Team PWC leistet.

Aufgabe 1: Schönes Arrangement

Aufgabe

Sie erhalten eine positive Ganzzahl, $int.

Schreiben Sie ein Skript, um die Anzahl der schönen Arrangements zurückzugeben, die Sie erstellen können.

Eine Permutation von n ganzen Zahlen, 1-indiziert, gilt als schöne Anordnung, wenn für jedes i (1

  1. perm[i] ist durch i teilbar
  2. i ist durch perm[i] teilbar

Meine Lösung

Für diese Aufgabe verwende ich die Permutationsfunktion aus dem itertool-Modul, um alle Permutationen durchzuarbeiten.

Dann geht es nur noch darum, festzustellen, ob diese Permutation die angegebenen Kriterien erfüllt. Wenn nicht, gehe ich zur nächsten Permutation über. Wenn ja, füge ich eins zur Zählvariablen hinzu.

def beautiful_arrangement(n: list) -> str:
    count = 0

    for p in permutations(range(1, n+1)):
        for i in range(n):
            if p[i] % (i+1) != 0 and (i+1) % p[i] != 0:
                break
        else:
            count += 1

    return count

Möglicherweise gibt es eine effizientere Methode zur Berechnung der Ergebnisse, die ohne rohe Gewalt auskommt. Mein Code würde bei größeren Zahlen sehr ineffizient werden. Ich habe keine Zeit damit verbracht, dies zu untersuchen.

Beispiele

$ ./ch-1.py 1
1

$ ./ch-1.py 2
2

$ ./ch-1.py 10
700

Aufgabe 2: Verschachteltes Array

Aufgabe

Sie erhalten ein Array von Ganzzahlen, @ints der Länge n, das Permutationen der Zahlen im Bereich [0, n - 1] enthält.

Schreiben Sie ein Skript, um eine Menge zu erstellen, set[i] = ints[i], ints[ints[i]], ints[ints[ints[i]]], ..., unterliegt den folgenden Regeln:

  1. Das erste Element in set[i] beginnt mit der Auswahl der Elemente ints[i].
  2. Das nächste Element in set[i] sollte ints[ints[i]] sein, dann ints[ints[ints[i]]] und so weiter.
  3. Wir hören mit dem Hinzufügen auf, unmittelbar bevor ein doppeltes Element in set[i] auftritt.

Meine Lösung

Das ist relativ einfach. Ich beginne mit einer Variablen namens longest_set, die auf 0 gesetzt ist. Anschließend iteriere ich durch jede Startposition und setze die this_set-Liste als erstes Element der Menge (d. h. ints[i]). Ich füge diesem Satz immer wieder hinzu, während ints[this_set[-1]] nicht in der this_set-Liste erscheint. Nachdem dies erledigt ist, vergleiche ich die Länge der this_set-Liste mit dem longest_set-Wert. Wenn er größer ist, aktualisiere ich den longest_set-Wert.

def nested_array(ints: list) -> int:
    longest_set = 0

    for start in range(len(ints)):
        this_set = [ints[start]]

        while ints[this_set[-1]] not in this_set:
            this_set.append(ints[this_set[-1]])

        if longest_set 



<h3>
  
  
  Beispiele
</h3>



<pre class="brush:php;toolbar:false">$ ./ch-2.py 5 4 0 3 1 6 2
4

$ ./ch-2.py 0 1 2
1

$ ./ch-2.py 1 2 0 4 5 2
5

Das obige ist der detaillierte Inhalt vonVerschachtelte Schönheit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Python: Ein tiefes Eintauchen in Zusammenstellung und InterpretationPython: Ein tiefes Eintauchen in Zusammenstellung und InterpretationMay 12, 2025 am 12:14 AM

PythonusesahybridmodelofCompilation und Interpretation: 1) thepythonInterPreterCompilessourceCodeIntoplatform-unintenpendentBytecode.2) Thepythonvirtualmachine (PVM) ThenexexexexecthisByTeCode, BalancingeAnsewusewithperformance.

Ist Python eine interpretierte oder eine kompilierte Sprache, und warum ist es wichtig?Ist Python eine interpretierte oder eine kompilierte Sprache, und warum ist es wichtig?May 12, 2025 am 12:09 AM

Pythonisbothinterpreted und kompiliert.1) ItscompiledToByteCodeForPortabilityAcrossplatform.2) thytecodeTheninterpreted, und das ErlaubnisfordyNamictyPingandRapidDevelopment zulässt, obwohl es sich

Für Schleife vs während der Schleife in Python: Schlüsselunterschiede erklärtFür Schleife vs während der Schleife in Python: Schlüsselunterschiede erklärtMay 12, 2025 am 12:08 AM

ForloopsaridealWenyouKnowtHenumberofofiterationssinadvance, während whileloopsarebetterForsituationswhereyouneedtoloopuntilaconditionismet.forloopsaremoreffictionAndable, geeigneter Verfaserungsverlust, whereaswiloopsofofermorcontrolanduseusefulfulf

Für und während Schleifen: ein praktischer LeitfadenFür und während Schleifen: ein praktischer LeitfadenMay 12, 2025 am 12:07 AM

Forloopsareusedwhenthenumberofiterationsisknowninadvance,whilewhileloopsareusedwhentheiterationsdependonacondition.1)Forloopsareidealforiteratingoversequenceslikelistsorarrays.2)Whileloopsaresuitableforscenarioswheretheloopcontinuesuntilaspecificcond

Python: Ist es wirklich interpretiert? Die Mythen entlarvenPython: Ist es wirklich interpretiert? Die Mythen entlarvenMay 12, 2025 am 12:05 AM

Pythonisnotpurelyinterpretiert; itusesahybridapproachofByteCodecompilation undruntimeinterpretation.1) PythoncompilessourcecodeIntoBytecode, die ISthenexecutBythepythonvirtualmachine (Pvm)

Python -Verkettungslisten mit demselben ElementPython -Verkettungslisten mit demselben ElementMay 11, 2025 am 12:08 AM

ToconcatenatelistsinpythonWithThesameElements, Verwendung: 1) Die Operatortokeepduplikate, 2) asettoremoveduplicate, or3) listenConpRectionforControloverDuplikate, EvermethodhasDifferentPerformanceInDormplocate.

Interpretiert gegen kompilierte Sprachen: Pythons PlatzInterpretiert gegen kompilierte Sprachen: Pythons PlatzMay 11, 2025 am 12:07 AM

PythonisaninterpretedLuage, OfferingaseofuseandflexibilitätsbutfacingPerformancelimitationsincriticalApplications.1) InterpretedLanguages ​​LikePythonexecutine-by-Line, ermöglicht, dassmediateFeedbackandrapidPrototyping.2) CompiledLanguagesslikec/C.5.

Für und während der Schleifen: Wann benutzt du jeweils in Python?Für und während der Schleifen: Wann benutzt du jeweils in Python?May 11, 2025 am 12:05 AM

Useforloopswhenthenumberofofiterationssisknowninadvance und wileloopswhenCiterationsDependonacondition.1) Forloopsardealforsequencelistorranges.2) Während

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.