Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1220 / 802 / 130
Регистрация: 10.03.2012
Сообщений: 5,129

Перевернутая башня

20.01.2024, 13:52. Показов 2829. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вавилонцы решили построить удивительную башню - расширяющуюся кверху и содержащую бесконечное число этажей и комнат. Она устроена следующим образом - на первом этаже одна комната, затем идет два этажа на каждом из которых по две комнаты, затем идёт три этажа, на каждом из которых по три комнаты и так далее:
... ... ...
15 16 17 18
12 13 14
9 10 11
6 7 8
4 5
2 3
1
Эту башню решили оборудовать лифтом - и вот задача: нужно научится по номеру комнаты определять, на каком этаже она находится и какая она по счету слева на этом этаже. Дано целое число - номер комнаты. Вывести два целых числа — номер этажа и ее порядковый номер слева на этаже.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2024, 13:52
Ответы с готовыми решениями:

Ханойская башня
Нужен пример реализации.На Си и С++я видел.А вот на СИ шарп не нашел.Вообщим нужна реализация класического алгоритма.Желательно не...

Ханойская башня в консоли
помогите написать код ханойская башня в c# concole с рекурсия благодарян

Реализация игры "Ханойская башня"
Доброго времени суток, я уже начал делать эту игру и сейчас я просто встал и не знаю, что делать. Собственно, с чем нужно помочь: 1....

27
 Аватар для Doomov
1056 / 335 / 119
Регистрация: 28.11.2020
Сообщений: 1,066
22.01.2024, 11:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Whitecolor Посмотреть сообщение
Точно 7 и 3? Не 6 и 2?
Точно
Вот пример вывода...
C#
1
2
3
4
5
6
7
8
9
10
Этаж: 7. Порядковый номер: 3.
9: 23  24  25
8: 19  20  21  22
7: 15  16  17  18
6: 12  13  14
5: 9  10  11
4: 6  7  8
3: 4  5
2: 2  3
1: 1
0
 Аватар для roach1967
985 / 465 / 234
Регистрация: 27.06.2014
Сообщений: 1,039
22.01.2024, 18:40
Можно совсем без массивов и списков, или обязательно нужны?
А то есть такой вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private static (int, int) GetFloor(int num)
        {
            int floor = 0; // этаж
            int numfl = 0; // все комнаты на эвсех этажах
            int blk = 0; // очередной квадрат комнат
            int lin; // номер шага в квадрате
            while (numfl < num)
            {
                blk++; // следующий квадрат комнат
                lin = 0; // шаг в квадрате
                while (lin != blk && numfl < num) // пока квадрат не заполнен или не достгли своего номера
                {
                    lin++; // добали шаг в квадрате
                    floor++; // добавили этаж
                    numfl += blk; // посчитали последнюю комнату на этом этаже
                }
            }
            return (floor, blk - numfl + num);
        }
Миниатюры
Перевернутая башня  
2
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18402 / 14334 / 5370
Регистрация: 17.03.2014
Сообщений: 29,011
Записей в блоге: 1
22.01.2024, 18:45
Цитата Сообщение от roach1967 Посмотреть сообщение
Можно совсем без массивов и списков, или обязательно нужны?
Уверен что они тут не нужны.

Раз выложили готовое решение (я лично надеялся увидеть его от ТСа в первую очередь), то выложу два своих.

без коллекций
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(int Floor, int Room) Babylon(int n)
{
    int count = 1, floor = 1;
    while (n > count)
    {
        for (int i = 0; i < count && n > count; i++)
        {
            n -= count;
            floor++;
        }
 
        count++;
    }
 
    return (floor, n);
}

EnumerateRooms к посту #3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
IEnumerable<(int N, int Group, int Floor, int LeftPos)> EnumerateRooms()
{
    int floor = 1;
    int count = 1;
    int n = 1;
    while (true)
    {
        for (int i = 0; i < count; i++)
        {
            for (int j = 0; j < count; j++)
            {
                yield return (n, count, floor, j + 1);
                checked
                {
                    n++;
                }
            }
            
            floor++;
        }
        
        count++;
    }
}
1
1220 / 802 / 130
Регистрация: 10.03.2012
Сообщений: 5,129
23.01.2024, 10:34  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Program
{
    static void Main(string[] args)
    {
        int roomNumber = 17;
        int n = 1;
        int floor = 0;
        while (roomNumber > n * n)
        {
            floor += n;
            roomNumber -= n * n;
            n += 1;
        }
        int resultFloor = floor + (roomNumber + n - 1) / n;
        int resultPosition = roomNumber % n != 0 ? roomNumber % n : n;
        Console.WriteLine("Номер этажа: " + resultFloor);
        Console.WriteLine("Порядковый номер слева на этаже: " + resultPosition);
    }
}
2
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18402 / 14334 / 5370
Регистрация: 17.03.2014
Сообщений: 29,011
Записей в блоге: 1
23.01.2024, 15:29
Whitecolor, хорошее и правильное решение
0
152 / 136 / 29
Регистрация: 02.07.2013
Сообщений: 996
24.01.2024, 13:01
на иллюстрации в условии задачи на втором и третьем этаже по 2 комнаты а должно 2 и 3 комнаты. не надо с иллюстрацией сверяться сверяться. поэтомя я не уверен что должно получиться для 17 результат 7.3
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18402 / 14334 / 5370
Регистрация: 17.03.2014
Сообщений: 29,011
Записей в блоге: 1
24.01.2024, 14:35
golosalex, непонятно почему вы так считаете, если в задании ясно сказано:
Цитата Сообщение от Whitecolor Посмотреть сообщение
на первом этаже одна комната, затем идет два этажа на каждом из которых по две комнаты, затем идёт три этажа, на каждом из которых по три комнаты и так далее
0
152 / 136 / 29
Регистрация: 02.07.2013
Сообщений: 996
24.01.2024, 15:43
Цитата Сообщение от OwenGlendower Посмотреть сообщение
golosalex, непонятно почему вы так считаете, если в задании ясно сказано:
не обращайте внимания, я просто невнимательно читал условие. вероятно при словах пирамида у меня возникло предположение, что на каждом следующемэтаже на 1 больше числа комнат. типа у пирамиды должен быть ровные стены и число комнат растет линейно, а тут будет не в форме пирамиды а в форме "закругленого клина".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.01.2024, 15:43

Фрагмент кода из игры Ханойская башня
Уважаемые пользователи форума, можете объяснить для чего в данном фрагменте кода необходим оператор return private void...

Перевернутая башня
Вавилонцы решили построить удивительную башню - расширяющуюся кверху и содержащую бесконечное число этажей и комнат. Она устроена следующим...

Перевернутая таблица
Как можно первернуть таблицу, с помощью какого компонента? У нас поля таблицы идут сверху, записи слева. А мне необходимо наоборот. Слева...

Перевернутая выборка
$get = $this-&gt;database-&gt;prepare(&quot;SELECT `id`, `to_id`, ...

Перевернутая текстура
Всем привет, вобщем играюсь с графикой и пишу рендер движок, возникла такая проблема, я делаю офф скрин рендеринг в текстуру не создавая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru