Диван 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]
Okx
источник
1
Это новый язык игры в гольф, который я чувствую? :)
ETHproductions
1
+1 за новый язык. Еще один, чтобы учиться </
sigh
1

Желе , 7 6 байт

HSạ⁽¡ç

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

Объяснение:

HSạ⁽¡ç    Example input: [4,16,64]
H         Halve input. [2, 8, 32]
 S        Sum. 42
   ⁽¡ç    Number 1024.
  ạ       Difference. 982

-1 байт с использованием числа base-250

Товарищ Спаркл Пони
источник
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}

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

iBug
источник
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

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

LiefdeWen
источник
0

F #, 24 байта

fun f->1024-List.sum f/2

1024 минус сумма, деленная на 2.

Воплощение невежества
источник