От AZSPCS :
Предположим, у вас есть колода, содержащая n карт. Каждая карточка содержит число от 1 до n, и каждая цифра указана на одной карточке. Вы смотрите на число на верхней карточке - допустим, это k - и затем меняете порядок верхних k карточек. Вы продолжаете эту процедуру - читая верхний номер, а затем переворачивая соответствующее количество карточек, - пока верхняя карточка не станет 1.
Напишите самую быструю программу для вычисления количества обращений для данной колоды. Обратите внимание, что если вы участвуете в конкурсе, вы не можете публиковать свой код (и поэтому я пока не буду публиковать свой код).
code-challenge
fastest-code
Александр
источник
источник
Ответы:
JavaScript
Вы передаете ей колоду, вот так:
источник
Скала: (Это не гольф - не так ли?)
Заполните заявку тестовым набором и секундомером, включая перетасовку колоды:
Количество: 1000 Размер: 100 Продолжительность: 1614 мсек Машина: Single Pentium M 2 ГГц
источник
Питон, 84 символа
Игра в гольф в любом случае ... Я использую цифры от 0 до n-1. Предполагая, что массив хранится в переменной x, у меня уходит 84 символа Python.
Тем не менее, производительность довольно плохо из-за злоупотребления памятью.
источник
С
deck
указатель на целочисленный массив, представляющий колодыn
это количество карт. Очевидно, безопасность памяти является задачей вызывающего абонента.Вероятно, он приближается к самому быстрому алгоритму на современных компьютерах и на языке высокого уровня. Только с помощью трюков на уровне asm это можно сделать быстрее, но не сильно даже с ними.
источник
Perl 5 , 58 + 2 (-ap) = 60 байт
Попробуйте онлайн!
источник