Von AZSPCS :
Angenommen, Sie haben ein Deck mit n Karten. Jede Karte enthält eine Zahl von 1 bis n, und jede Zahl erscheint auf genau einer Karte. Sie sehen sich die Zahl auf der obersten Karte an - sagen wir, es ist k - und kehren dann die Reihenfolge der obersten k Karten um. Sie setzen diesen Vorgang fort - lesen Sie die oberste Zahl und kehren Sie dann die entsprechende Anzahl von Karten um - bis die oberste Karte 1 ist.
Schreiben Sie das schnellste Programm, um die Anzahl der Umkehrungen für ein bestimmtes Deck zu berechnen. Beachten Sie, dass Sie Ihren Code nicht veröffentlichen dürfen, wenn Sie am Wettbewerb teilnehmen (und ich meinen Code daher noch nicht veröffentlichen werde).
code-challenge
fastest-code
Alexandru
quelle
quelle
Antworten:
JavaScript
Sie übergeben es dem Deck, wie folgt:
quelle
Scala: (Dies ist kein Golf - oder?)
Komplette Anwendung mit Testfall und Stoppuhr, einschließlich des Mischens des Decks:
Anzahl: 1000 Größe: 100 Dauer: 1614 ms Maschine: Single Pentium M 2Ghz
quelle
Python, 84 Zeichen
Golfen sowieso ... Ich benutze die Zahlen 0 bis n-1. Angenommen, das Array ist in einer Variablen x gespeichert, benötige ich 84 Zeichen Python.
Die Leistung ist jedoch aufgrund von Speichermissbrauch ziemlich schlecht.
quelle
C.
deck
ist ein Zeiger auf ein Integer-Array, das die Decks darstellt.n
ist die Anzahl der Karten. Offensichtlich ist die Speichersicherheit die Aufgabe des Anrufers.Es nähert sich wahrscheinlich dem schnellsten Algorithmus auf neueren Computern und in einer Hochsprache. Nur mit Tricks auf Asm-Level konnte es schneller gemacht werden, aber auch mit ihnen nicht schwer.
quelle
Perl 5 , 58 + 2 (-ap) = 60 Bytes
Probieren Sie es online aus!
quelle