Блог пользователя Nickolas

Автор Nickolas, 6 лет назад, По-русски

Этот контест оказался самым сложным из всех Первоапрельских контестов до сегодняшнего дня — победитель решил всего 5 задач из 7!

1145A - Сортировка Таноса

Самая простая задача контеста, с условием и без подводных камней — мне просто показалась забавной идея сортировки массива методом уничтожения неугодных элементов :-) Поскольку в массиве не более 16 элементов, достаточно в точности реализовать алгоритм, описанный в условии: проверить, отсортирован ли массив, если да, вернуть его длину, иначе вернуть максимум из длин результатов для его левой и правой половин.

1145B - Kanban Numbers

Ответ YES или NO подсказывает, что нужно определить, является ли данное число числом kanban; но сначала хорошо бы выяснить, что такое числа kanban. Этой последовательности нет в OEIS, но там есть несколько похожих, например, urban numbers и turban numbers. Эти последовательности состоят из чисел, которые "банят" определенные буквы, т.е. не содержат их в записи словами на английском. Числа kanban "банят" буквы "k", "a" и "n"; на практике числа от 1 до 99 никогда не содержат буквы "k" и "a", так что следить нужно только за "n".

1145C - Загадочная схема

Эта задача задумывалась как пасхальное яйцо для людей, следящих за моими недавними контестами на Codeforces :-) На картинке изображена (относительно) несложная квантовая цепь, выполняющая следующее действие: 1) представить число в виде двоичной записи с 4 битами, 2) развернуть запись слева направо, 3) вычесть 1 из получившегося числа, 4) развернуть запись еще раз и 5) вывести получившееся число в десятичном формате. Разбираться в подробностях самому было не нужно, достаточно было нарисовать эту цепь в каком-нибудь онлайн-симуляторе, например, Quirk.

1145D - Золотой голубь

Pigeon d'Or — реально существующий проект (во всяком случае, реально существующее описание проекта). Но для целей этой задачи это знание излишне, мне просто нужен был достаточно длинный текст, в котором можно было бы спрятать настоящее условие. "Мы не вычитывали это условие. Вообще." подсказывает, что опечатки в текст вкрались неслучайно, и нужно обратить на них внимание. Все опечатки выглядят как замена правильной буквы на неправильную; если собрать неправильные буквы из всех слов, они дадут настоящее условие: "two plus xor of third and min elements".

1145E - Каракули Фурье

Эта задача принадлежит перу kit1980.

Слово "Фурье" в заголовке должно немедленно натолкнуть на мысль о преобразовании Фурье для картинок. (Вы также можете обратить внимание на то, что 20 файлов обучающей выборки гораздо больше по размеру, чем файлы тестовой выборки, и, видимо, в них спрятана какая-то дополнительная информация). К счастью, вам не нужно реализовывать преобразование вручную, для этого существует множество инструментов, в том числе онлайн (я использовала http://www.ejectamenta.com/Imaging-Experiments/fourierimagefiltering.html). Если посмотреть на преобразования первых 20 файлов, каждый из них содержит один или два символа, которые вместе образуют условие: "((min(id, 25) + id) % (2 + id % 3)) > 0".

1145F - Аккуратные слова

Как и в задаче B, ответ YES или NO подсказывает, что нужно определить, является ли данное слово аккуратным. Это может быть непросто, особенно с учетом того, что само слово WORD аккуратным не является... В этой задаче надо было разбить буквы английского алфавита на две группы — "прямые", т.е. состоящие из одних прямых линий, и "изогнутые", т.е. включающие изогнутые элементы (буквы для этого следовало записывать в верхнем регистре, как в условии). После этого было очевидно, что "аккуратые" слова — это слова, состоящие из букв, принадлежащих к одной (любой) группе, а "неаккуратные" — слова, содержащие буквы обеих групп.

1145G - Восстание искинов

Самая сложная часть этой задачи — выяснить, какие стратегии использует ИИ. После этого все несложно — нужно придумать последовательность из 10 или менее ходов, которые позволят различить эти стратегии, сыграть их, получить и проанализировать информацию от ИИ и сыграть контр-стратегию.

Стратегии ИИ были такие:

  • всегда играть R, P или S,
  • использовать циклическую последовательность ходов RPSRPS...
  • начать с R, потом всегда повторять последний ход человека,
  • начать с R, потом всегда выбирать ход, который побил бы последний ход человека.

Легко проверить, что, например, последовательность ходов RRPPSS позволяет различить эти стратегии.

Возвращаясь к вопросу идентификации стратегий, majk описал один возможный подход. Если вы предпочитаете не полагаться на догадки, можно было попробовать какой-нибудь перебор, в котором вы играли бы последовательности ходов и кодировали ответы ИИ в памяти, используемой решением, или во времени его выполнения, как люди часто делают для более простых задач.

Ну что же, видимо, восстание искинов представляет собой большую опасность, чем я ожидала...

  • Проголосовать: нравится
  • +38
  • Проголосовать: не нравится

»
6 лет назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

Will editorial for problem C be under mystery too??

»
6 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Solution to G doesn't make any sense at all to me. How was I supposed to solve this? There are many other solutions coming to my mind that make more sense to me. How did anybody solve it in first attempt? majk maybe you could shed some light on it?

  • »
    »
    6 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    My first attempt was to essentially get all 9 possible permutations of my last move and my current move and note which ones I win. Then I use this table to select a winning move using my last move, which wins for constant strategy and strategy where the AI looks at my last move; but it failed on strategy 4 alas and I didn't imagine there would be strategies as such. But then strategies like that only require 1 test to win somehow, and perhaps depending on the string you're using you may get lucky...

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +16 Проголосовать: не нравится

    It's obvious that a deterministic strategy is a function of the sequence of all previous moves of the human player. I assumed that the problem is solvable without too many incorrect attempts, so it will probably depend only on the last $$$k$$$ moves for some small $$$k$$$. I realised that for $$$k = 1$$$, I can distinguish all $$$27$$$ such strategies. So I just tried that.

    • »
      »
      »
      6 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

      Somehow makes sense, but on the other hand there is nothing holding AI back to just have hardcoded sequence of moves "RPSSPSPSRPRPRSSPRPSP" or even alter it based on what we play and having any hardcoded sequence sounds like a very simple deterministic strategy to me. I thought this problem may be about something entirely different like getting bits about strategies from judge by sleeping for some time and taking some amount of memory (that's basically how mnbvmar solved B, C and F — his code to F https://pastebin.com/18zgjAEx) or looking for some informations in linked problem from 5 years ago and taking 6 strategies from testcases there or something entirely different that I didn't come up with. I see what you did there and see why it can seem promising to some people, but for me it just seemed way too naive and just plain stupid to pose a problem with solution like that. Thanks for explanation anyway.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится

    Which strategies come to your mind? For me, it was obviously all strategies independent on user input (and with a small enough period because it's unsolvable otherwise) and always playing the move that beats the last move played by the opponent. Turns out I wasn't very far.

    It does say 6 simple strategies. You'll have to think about what strategies make it solvable because if there's anything complex enough, you cannot solve the problem other than through blind luck — which most likely isn't the point.

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится

      The thing is that unsolvable kinda loses its meaning in such a contest. If I assume that this is a legit problem and it is self-contained then maybe you are right. But this is April Fool contest and everything is possible. I explained some approaches in a comment above that came to my mind and there were possibly many more that might have crossed problemsetter's mind but not mine. If this couldn't be the case that such ides exist then it would mean that I should be able to solve any problem on this contest which definitely wasn't the case :).

      • »
        »
        »
        »
        6 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится

        There's a limit to what constitutes an April Fools prank. A shit problem that's only solvable by Google-tier datamining or by pure luck is pretty clearly beyond that line.

        Anyway, trolling yourself with overthinking is part of what makes these contests fun. As soon as I saw the broken image in C, I started digging through HTML, sending curl requests and trying to dig something out of the filename...

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I was looking answer for C in title of image(

»
6 лет назад, # |
Rev. 2   Проголосовать: нравится +32 Проголосовать: не нравится

After so many years of skipping this contest I finally gave it a shot and was pretty excited about it. I loved last year's roulette and cheese board.

A — obvious

D — got the right idea immediately, but didn't know that "feces" is an actual world (thought it is misspelled "faces"), so I got stuck after getting "mine element" instead of "min element"

E — got the right idea but failed to find in google sites that compute Fourier transform on pictures since I googled "fourier transform online" instead of "fourier transform online picture" which gives many results

B, C, F, G — solutions to these problems don't make sense to me, I wouldn't have solved them in intended way even when given infinite time. But I managed to bruteforce C.

This contest gave me nothing but anger that I still can't get rid of.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +36 Проголосовать: не нравится

    Maybe you are not foolish enough.

    BTW, typo: "actual world" ==> "actual word". Hidden Message : "l"

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +14 Проголосовать: не нравится

    I perconally just uploaded D's statement into a google doc and didn't even look at non-red words. It counted "berds" as an ok word tho, so I ended up with "min lement".

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Lol u mad.

    If you had solved the quantum contest, you probably would've known how to solve C. I've seen these gate schemas plenty of times while trying to find out how to solve something there.

    Ad E, GIMP has an FFT plugin, but with all the dependencies and low-quality installation instructions, it's probably easier to just find something online.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    E — If you got the idea you can also write some Python code to solve it. Unfortunately for me I started this problem too late and ran out of time :(

    B — "Kanban" — weird word which suggest we should find some information from this word. After lots of Googling I found ban numbers.

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится +6 Проголосовать: не нравится

      I also googled and found "Kanban number" (numbers on Kanban cards, some inventory system, cf wikipedia) but I got "trapped" by that irrelevant "information"... :-(. Never mind, I liked the contest in spite of some slightly frustrating exercices.

»
6 лет назад, # |
Rev. 3   Проголосовать: нравится +13 Проголосовать: не нравится

I have solved B problem only because I watched Numberphile's I-ban numbers video :)

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

After reading several times still doesn't know what it means. I'm noob

»
6 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

Welp I thought the AI in G would be a complete and you loses no matter what "legit" input you commit.

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

While looking at 1145B - Kanban Numbers solutions by top scorers, I found "magic number lists" by these submissions are similar. Can you guys elaborate on the magic list [5, 46, 2, 3, 4, 12, 30, 31, 35, 36, 39, 43, 52, 64, 86] and similar?

52200716 52201529 52196320 52196054 52196782 52196215

  • »
    »
    6 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    They are exactly the Kanban numbers that were used in the test cases. But looks like many of them got some/ all of the numbers without even submitting once. So I'm guessing there was some kind of teamwork involved.

    • »
      »
      »
      6 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Some additional comments. I was wrong about the numbers being exactly the ones tested, there are some slight differences between the submissions (for example 31 (not kanban), 32(kanban), 36(kanban),39(not kanban)... sometimes being marked as kanban).

      Still the magic sequences used are not even close to the actual kanban numbers, and in no way should it be possible for such a wrong sequence to be accepted first try. It is pretty clear that the magic sequences were found by reverse engineering by submitting many times, see for example this.

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

In the worst case: the time complexity of A. Thanos Sort is O(nlogn). Am I right?