Диван 2048: сколько еще до 2048?


20

Я только что попробовал игру под названием Couch 2048 .
(Примечание: вам следует посмотреть, чтобы лучше понять этот вопрос.)
Поскольку это было не очень интересно для меня, я спрашивал себя: «Сколько еще до 2048 года !?»
Это вдохновило меня на подачу заявки, потому что рассчитать ее не так просто, как я думал.

Ваша цель:
учитывая список шаров на диване, вы должны вывести, сколько шаров со значением 2 должно упасть с неба, чтобы можно было выиграть игру (достигнув 2048 шаров).

  • Предположим, что ввод действителен.
  • Предположим, игрок не будет бросать шары.
  • Предположим, что шары, падающие с неба, всегда имеют значение 2, как я уже сказал.
  • Допустимые примеры вывода: 3, "4", [5], ["6"]

Изменить:
я должен уточнить кое-что:
- Вы должны напечатать наименьшее необходимое количество секунд.

Тестовые случаи:
[2048] -> 0 Вы уже выиграли
[1024,1024] -> 0Вам не нужно больше шаров, чтобы выиграть
[1024,512,256,128,64,32,16,8,4,2] -> 1Один шар, необходимый для «активации цепочки»
[512] -> 768
[512,2] -> 767
[4,16,64] -> 982

Примечания :
я не являюсь носителем языка - скажите, заметили ли вы опечатку или какой-то неграмматический текст.
Если что-то неясно, спрашивайте в комментариях.


почему [4,16,64] -> 22?
м2 18

3
Добро пожаловать в PPCG. Это выглядит так: сложить все элементы в массиве, вычесть из 2048и разделить на 2- если это так, вы можете дважды проверить последний контрольный пример - если нет, пожалуйста, используйте его в качестве примера, чтобы объяснить, почему вывод 'т 982.
лохматый

1
@Shaggy спасибо за замечание глупой ошибки

4
Вау, я не думал, что мой первый вызов будет иметь 7 ответов и 2 отзыва в первый час! И я достиг ~ 28 человек!

2
Эй, даунвотер: объясни свою точку зрения! Это необходимо для улучшения задачи!

Ответы:


11

Java 8, 17 байт

s->1024-s.sum()/2

Порт @LuisFelipeDeJesusMunoz 'ответ JavaScript .

Попробуйте онлайн.

Объяснение:

s->           // Method with IntStream parameter and int return-type
  1024-       //  Return 1024, minus:
   s.sum()    //   The sum of the input-IntStream
          /2  //   Divided by 2

11
Это чувство, когда Java бьет и Python (потому что лямбда-синтаксис) и Javascript (потому что сумма)
Quintec

8

Brain-Flak , 72 байта

({{}})({<({}[()()])>()}{})([{}]((((((((()()()()){}){}){}){}){}){}){}){})

Попробуйте онлайн!

({{}})                     # Sum entire stack
      (                  ) # Push:
       {<          >()}{}  #   The number of times you can...
         ({}[()()])        #   Subtract 2 before reaching 0

([{}]                                        ) # Subtract that from...
     ((((((((()()()()){}){}){}){}){}){}){}){}  # 1024

1
Спасибо! Я заинтересован в изучении Brain-Flak, и ваше объяснение было полезным.
Гален Иванов








2

Католикон , 5 байт

-`L̇½Ṗ

Объяснение:

-      subtract
 `L̇    1024
       from
   ½   half of the
    Ṗ  sum [of the input]

1
Это новый язык игры в гольф, который я чувствую? :)
ETHproductions

1
+1 за новый язык. Еще один, чтобы учиться </
sigh





1

perl -aE, 27 байт

$"=$:;say eval"(2048-@F)/2"

Это читает строку с числами (разделенными пробелами) STDINи записывает ответ STDOUT.

Что он делает, так это вычитает все числа из входных данных из 2048, а остаток делит на 2. -aПереключатель помещает в массив @F(одно число на элемент). Если мы интерполируем массив в строку (что мы и делаем здесь), perl помещает значение $"между элементами. Мало используемая переменная $:будет по умолчанию \n-; и поскольку пропуски между токенами игнорируются, в результате вычитаются все числа из 2048. Выполняется evalвычисление.







0

AWK, 26 байт

{s+=$1}END{print 1024-s/2}

Входные числа разделены новыми строками (т.е. по одному на строку)


0

Нейм, 6 байт

Довольно новый для Нейма, но получил это работает

𝐬ᚺςᚫᛦ𝕤

Объяснение:

  𝐬         : Sum input
   ᚺ        : Divide by 2 (stack now [input summed and divided by 2])
    ς       : Variable set to 16 pushed to stack
     ᚫ      : Multiply by 2
      ᛦ     : Square (stack now [input summed and divided by 2, 1024])
       𝕤    : Subtract then absolute

Попробуйте онлайн!






Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.