Z AZSPCS :
Załóżmy, że masz talię zawierającą n kart. Każda karta zawiera liczbę od 1 do n, a każda liczba pojawia się na dokładnie jednej karcie. Patrzysz na liczbę na górnej karcie - powiedzmy, że to k - a następnie odwracasz kolejność najlepszych k kart. Kontynuujesz tę procedurę - odczytując najwyższy numer, a następnie odwracając odpowiednią liczbę kart - aż górna karta wyniesie 1.
Napisz najszybszy program do obliczenia liczby przewrotów dla danej talii. Pamiętaj, że jeśli bierzesz udział w konkursie, nie możesz opublikować swojego kodu (a zatem nie opublikuję jeszcze mojego kodu).
code-challenge
fastest-code
Alexandru
źródło
źródło
Odpowiedzi:
JavaScript
Zdajesz go na pokład, tak:
źródło
Scala: (To nie jest golf - prawda?)
Kompletna aplikacja z walizką testową i stoperem, w tym tasowanie talii:
ilość: 1000 rozmiar: 100 czas trwania: 1614 ms maszyna: Single Pentium M 2Ghz
źródło
Python, 84 znaków
W każdym razie gra w golfa ... Używam liczb od 0 do n-1. Zakładając, że tablica jest przechowywana w zmiennej x, zajmuje mi 84 znaki Pythona.
Jednak wydajność jest dość zła z powodu nadużywania pamięci.
źródło
do
deck
jest wskaźnikiem do tablicy liczb całkowitych reprezentujących pokłady.n
to liczba kart. Oczywiście bezpieczeństwo pamięci jest zadaniem osoby dzwoniącej.Prawdopodobnie zbliża się do najszybszego algorytmu na najnowszych komputerach i w języku wysokiego poziomu. Tylko dzięki sztuczkom na poziomie asm można to zrobić szybciej, ale nie ciężko nawet przy nich.
źródło
Perl 5 , 58 + 2 (-ap) = 60 bajtów
Wypróbuj online!
źródło