Как стать автором
Обновить

Считаем, сколько заплатить в магазине и проверяем поле морского боя: разбор задач для разработчиков C#, iOS и Android

Блог компании Ozon Tech Занимательные задачки Разработка под iOS *C# *Учебный процесс в IT
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.5K
Комментарии 2

Комментарии 2

Если вы нашли более изящное решение — делитесь в комментариях:)


Извиняюсь что на python :) Использую только стандартные библиотеки… И только изящные решения)
Сумма к оплате
def calc_sum(arr):
    res = 0
    for price, count in Counter(arr).items():
        res += price * (count - count // 3)
    return res




Электронная таблица
Примечание. Я тут подумал, что может я не правильно понял задачу и надо сортировать как в Экселе — всю таблицу? Тогда моё решение неверно)

Транспонируем матрицу. Запоминаем, какие колонки сортировали.
Таким образом сложность решения будет максимальное из O(n * m) и O(uniq(k) * n log n), где uniq(k) — это кол-во уникальных колонок для сортировки.
def main():
    n, m = map(int, input().split())
    arr = [[0] * n for _ in range(m)]  # transpose matrix

    for i in range(n):
        line = sys.stdin.readline().rstrip()
        a = list(map(int, line.split()))
        for j in range(m):
            arr[j][i] = a[j] # for transpose matrix
    k = int(input())
    done = [False] * m

    for _ in range(k):
        col = int(input())
        if not done[col]:
            arr[col] = sorted(arr[col])
            done[col] = True

    for row in range(n):  # transpose matrix
        for col in range(m):
            print(arr[col][row], end=' ' if col < m - 1 else '\n')

"""
Пример ввода:

4 3
5 5 5
1 2 3
4 5 6
1 2 3
4
0
0
1
2

Пример вывода:
1 2 3
1 2 3
4 5 5
5 5 6

"""



… остальные пока не решал

Г-образный морской бой:

Бежим по полю ищем звёздочку. Если встречаем, заменяем ее на что-то другое (на x) чтобы не зациклилось, рекурсивно проверяем и заменяем соседние, ищем минимальную и максимальную координаты. Получаем левый верхний и правый нижний угол поля, содержащего корабль. Анализируем, можно сравнить с шаблонами, можно аналитически - это квадрат, кол-во символов корабля (1,3,5,7) и их взаимную симметрию.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.