Обновить
20.43

Занимательные задачки

Разминаем мозги

Сначала показывать
Порог рейтинга

Занимательные задачи от Cloud.ru ☁️

Привет! Вновь с вами Павел Бузин — эксперт Cloud.ru по AI, машинному обучению и точным наукам. Это финальная задача нашего интеллектуального марафона, в которой я предлагаю пересмотреть или просто вспомнить, пожалуй, самый культовый фильм «Бойцовский клуб» и подумать об отношениях главных героев — рассказчика-протагониста и Тайлера Дёрдена.

Если мы посмотрим на Тайлера спустя четверть века после выхода фильма, кого мы представим в первую очередь? Цифрового аватара-двойника? Ассистента с искусственным интеллектом, умело манипулирующего своим хозяином? Или вторую половину раздвоившейся личности рассказчика?

Вот несколько лежащих на поверхности фактов в пользу аватара: взрыв в квартире рассказчика, переход Марлы через дорогу в нужный момент, покупка авиабилетов, о которых не помнит рассказчик.

А теперь предлагаю посмотреть на Тайлера с позиции теста Тьюринга. На какие логические противоречия по сюжету фильма может опереться рассказчик, чтобы делать вывод о том, что Тайлер Дёрден — его цифровой аватар, а не его человеческое альтер-эго?

Делитесь вариантами в комментариях 👇 Обсудим их 30 мая.

Теги:
Рейтинг0
Комментарии1

Занимательные задачи от Cloud.ru ☁️

Привет! На связи Павел Бузин — эксперт Cloud.ru по AI, машинному обучению и точным наукам. Сегодня предлагаю вспомнить фильм Кин-Дза-Дза и известное выражение «Скрипач не нужен!».

В статьях Википедии, посвященных культовому фильму Кин-Дза-Дза, нет прямого изложения сюжета про катапультирование Гедевана Александровича. Как результат — современные LLM не понимают контекста этого выражения и начинают галлюцинировать.

В качестве тренировки навыков промт-инжиниринга предлагаю спросить разные LLM на эту тему. Как минимум вы получите большое удовольствие, спрашивая в разных вариантах «Скрипач не нужен!», «Не Скрипач нужен!», «Нужен не Скрипач!» и т. д.

P. S. Если вы вспомните, что внутри LLM оперирует эмбеддингами, вы сможете обнаружить и сравнить неэквивалентность «Скрипач не нужен!», «Нужен не Скрипач!» и других вариантов в понимании современных LLM.

Делитесь самыми интересными вариантами в комментариях 👇 Результаты обсудим 30 мая.

Теги:
Рейтинг0
Комментарии1

Привет! Собрали для вас три интересных разбора математических задач из журнала КОД, которые помогут размять мозг.

  1. Почему время на сервере отличается от времени у пользователей
    Разбираемся, почему в некоторых сервисах вы видите странное время публикации сообщений и что происходит с временными метками на бэке.
    Читать статью

  2. Миллион умножений и нестандартное мышление
    История о популярной школьной задаче, где нужно перемножить много чисел. Важно не просто посчитать, а придумать оптимальное решение. Пример того, как иногда важно выйти за рамки шаблонов.
    Читать статью

  3. Самая сложная задача для школьников, которую никто не смог решить
    Разбор олимпиадной задачи, которая оказалась настолько непростой, что за всё время не нашлось ни одного решения. Хороший повод задуматься, почему некоторые вопросы сложнее, чем кажутся на первый взгляд.
    Читать статью

Теги:
Рейтинг0
Комментарии0

Посмотрите на код ниже — где в нём проблема? Пишите ваши мысли в комментариях, а ниже мы дадим решение ошибки.

object UnitError {

def printMsg(message: String): Unit = {
 println(message)
 }

def process(data: List[Int]): List[Unit] = {
 for (element <- data) yield {
 printMsg(s"Элемент: $element")
 }
 }

def main(args: Array[String]): Unit = {
 val nums = List(1, 2, 3)
 val res = process(nums)
 println(s"Результат: $res") // Вывод List[Unit] даёт неожиданный результат
 }
 }

Дальше будет решение — если не хотите спойлеров, пролистните текст ниже.

Ошибка заключается в неверной конструкции при использовании функции process. Она возвращает пустые значения: List((), (), ()). Происходит это потому, что yield собирает результаты каждой итерации. В итоге получается список, состоящий из пустых значений Unit — по одному на каждый элемент в data.

Unit в Scala — это аналог void в Java и Си-подобных языках, означающий пустое значение. В данном примере yield собирает результаты printMsg(...), которые все являются Unit (пустыми).

Программисты, привыкшие к императивным языкам и переходящие на Scala, интуитивно ожидают, что такая конструкция будет возвращать какие-то преобразованные данные, например — как это делает map в JavaScript. То есть, начинающие скалисты могут ожидать здесь на выходе список элементов, а получат пустой вывод.

Исправление

Если требуется вернуть список преобразованных значений, тогда нужно использовать эти значения в yield.

def printMsg(message: String): String = { // Теперь возвращает String
 println(message)
 message // Возвращает саму строку
 }

def process(data: List[Int]): List[String] = { // Теперь функция возвращает List[String]
 for {
 element <- data
 } yield {
 printMsg(s"Обрабатываем элемент: $element") // Теперь выводится результат String
 }
 }
Теги:
Рейтинг0
Комментарии1

Задача о поиске флага в журналах системы

Несложная задача с CTF-турнира. Будет интересна всем, кто интересуется информационной безопасностью.

Условие
Представьте, что вы — дежурный инженер. Вместе с коллегами вы ежедневно фиксируете состояние информационной системы в специальном журнале. Этот документ помогает определять угрозы и вовремя на них реагировать.

Однажды ваши коллеги рассказали, что где-то на странице журнала находится флаг. Но вот где именно — не раскрыли. Попробуйте найти этот флаг без подсказок коллег.

Задача
Найдите флаг — строку в формате slcctf{}. Чтобы выполнить задание, перейдите на страницу http://findme.slcctf.fun/.

Делитесь своим решением в комментариях. А правильный ответ можно посмотреть в Академии Selectel.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Интеллектуальная разминка с Cloud.ru 🦾

Всем привет! Продолжаем занимать вас интеллектуальными задачами, и наша следующая — по мотивам фантастической комедии «Быть Джоном Малковичем»:

Примерно на 19-й минуте фильма Крег Шварц выясняет имя своей коллеги Максин, с которой он решил обязательно познакомиться. Крег произносит, казалось бы, нечленораздельную последовательность звуков «ваал-люуупэлюкааадашээрзуузээльмэммамайманмаксин» и следит за реакцией Максин. Алгоритм Крега понятен — после того как ему удается угадать первую букву имени, он видит положительную реакцию на лице Максин и переходит к следующей и следующей букве, озвучивая «мэммамайманмаксин». После четвертой угаданной буквы ему удается подставить полное имя из словаря. 

Вопрос: сколько букв потребуется озвучить, чтобы выяснить методом Крега Шварца первые четыре буквы имени на русском языке? Будем считать, что имя из числа распространенных и не начинается на Й, Ь, Ы, Ъ, Ч, Ш и Щ.

При решении рекомендуем использовать поисковые системы, AI и Википедию.

Варианты ответов оставляйте в комментариях 👇 Я Павел Бузин — эксперт Cloud.ru по AI, машинному обучению и точным наукам, раскрою правильный ответ под этим постом 16 мая.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Проверьте точность ваших вычислений 🧮

Привет, Хабр! Мы продолжаем рубрику для тех, кто хочет размять мозги. На этот раз предлагаем вспомнить момент из фильма про Алана Тьюринга «Игра в имитацию».

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

Вопрос: какова должна быть минимальная длина случайной последовательности, чтобы четыре единицы подряд в последовательности (четыре реакции на шифровки) были неотличимы от случайности? 

Иначе говоря: найдите математическое ожидание количества бросков монеты до первого появления четырех единиц подряд (т. е. «орел», «орел», «орел», «орел») в последовательности бросков, если вероятности выпадения 1 («орла») и 0 («решки») равны и независимы друг от друга.

При решении рекомендуем использовать поисковые системы, AI и Википедию.

Варианты ответов оставляйте в комментариях 👇 Я Павел Бузин — эксперт Cloud.ru по AI, машинному обучению и точным наукам, раскрою правильный ответ под этим постом 12 мая.

Теги:
Рейтинг0
Комментарии2

Майский марафон интеллектуальных задач 🤖

Привет, Хабр! Праздники на носу, и чтобы вы не успели заскучать, мы подготовили для вас новую партию интеллектуальных задач. На этот раз на интуицию и сообразительность 😉. 

В фильме «Умница Уилл Хантинг» главный герой — двадцатилетний Уилл Хантинг из Южного Бостона, гений-самоучка, который работает уборщиком в Массачусетском технологическом институте и проводит свободное время, выпивая с друзьями Чаки, Билли и Морганом. В один момент профессор Джеральд Ламбо вывешивает на доске сложную комбинаторную математическую задачу, а Уилл ее решает. Попробуйте решить похожую задачу:

Есть фигура, составленная из двух тетраэдров, как показано на рисунке выше. Вопросы:

  • каким количеством вариантов можно добраться от вершины A до вершины B, не посещая на пути каждую вершину более одного раза?

  • какая длина самого длинного пути из вершины A до вершины B, если длина ребра равна 1, и мы не проходим одно ребро более одного раза? 

Варианты ответов оставляйте в комментариях 👇 Павел Бузин (@pbuzin) — эксперт Cloud.ru по точным наукам, AI и машинному обучению, раскроет правильный ответ под этим постом 5 мая.

Теги:
Рейтинг0
Комментарии10

Подборка задачек на тему сетевых технологий от Selectel

Привет, Хабр! Как насчет того, чтобы отвлечься от рабочих задач и порешать небольшие головоломки? Знаю, вы такое любите, поэтому вот подборка из Академии Selectel. По ссылкам доступны полные условия и пошаговое решение каждой задачи.

  • Задача о пропавшем интернете и резервировании каналов связи. Вы — создатель онлайн-игры, которая в последнее время набрала завидную популярность. Ваши игровые серверы доступны 24/7, и аудитория стремительно растет. Все вроде бы хорошо, пока в офисе не пропадает интернет… Настройте BGP и политики маршрутизации так, чтобы стоимость интернет-трафика оказалась минимальной, но доступ в интернет был зарезервирован от аварий у любого из операторов связи.

  • Задача об адресации в локальной вычислительной сети. Артем работает в сетевом департаменте фабрики по производству плюшевых тирексов. У фабрики появилось новое здание, для которого Артем проектирует локальную вычислительную сеть. Есть блок адресов 172.65.0.0/23 и восемь отделов, которым нужно определенное количество адресов. Помогите Артему разбить блок адресов 172.65.0.0/23 по отделам.

  • Задача об IP-адресе подсети. Даша мечтает попасть на стажировку в сетевой департамент IT-компании. Чтобы пройти отбор, ей необходимо решить задачу: найти адрес подсети, зная IP-адрес 192.168.150.111 и маску 255.255.255.224. Помогите ей найти адрес подсети и попасть на стажировку.

  • Задача об отказоустойчивом построении сети. У вас есть два сервера, на которых расположен один и тот же сервис. Он имеет один IP-адрес. Есть master-нода и standby-нода. Вам нужно защитить сервис на случай падения сервера. Реализуйте схему «горячего» резерва, то есть без выключения standby-ноды.

  • Задача об IP-адресах для новых сотрудников. В компании появилось пять новых сотрудников, и HR попросили сисадмина Платона помочь в подготовке рабочих мест. У него есть список IP-адресов, но только часть из них можно назначить коллегам. Определите, какие адреса можно использовать, а какие нет. Объясните, почему другие не подходят.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Задача о поиске чувствительных данных в дампе трафика

Условие
Представьте, что кто-то получил нелегитимный доступ к серверу по API. Вы провели внутреннее расследование и — о ужас! — нашли опубликованный в интернете файловый сервер. Его серый адрес — 192.168.1.47. Известно, что сервер использовался как файлообменник для IT-специалистов. Возможно, что-то ценное утекло именно оттуда.

Задача
Скачайте дамп трафика по ссылке dump.pcap и проанализируйте его. Найдите, в каком файле находились чувствительные данные, используемые для доступа к серверу по API.

Делитесь своим ответом в комментариях. А посмотреть полное решение можно в Академии Selectel.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии1

На картинке — код на Rust, и в нём затаилась ошибка. Я специально попросила её сделать моих коллег, разработчиков ИТ-компании «Криптонит».

Зачем? Чтобы потом попросить её найти и написать о ней в комментариях (ох, уж эти сммщики).

Итак, где тут ошибка?

СЕЙЧАС БУДЕТ СПОЙЛЕР!

Так в чём же ошибка?

В третьей строке возникает ошибка попытки доступа к элементу за пределами массива.
for i in 1..=numbers.len() выполнит итерацию по элементам, начиная со второго, а не с первого.

Ошибка заключается в попытке доступа к элементу с индексом [5] на последней итерации цикла. Такого элемента в массиве нет, в результате получаем аварийное завершение программы.

Также следует обратить внимание, что первый элемент массива с индексом [0] игнорируется. Это не является ошибкой с точки зрения выполнения программы, однако скорее всего является логической ошибкой в коде

Итак, в языке rust индексация элементов начинается с 0 и заканчивается len() - 1.
В массиве из 5 элементов допустимо обращение к [0], [1], [2], [3] и [4] элементам.

Рекомендуемый способ перебора элементов коллекции с автоматической индексацией на rust — использование цепочки вызовов iter().enumerate().

Вот как это выглядит

fn main() { 
    let numbers = vec![10, 20, 30, 40, 50];
    for (index, number) in numbers.iter().enumerate() { 
        println!("Элемент {index}: {number}");
    } 
}

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

Теги:
Всего голосов 5: ↑3 и ↓2+1
Комментарии1

Бинго разработчика: ставь лайк зачеркивай, если было

В выходные не работаем, но развлекаемся, поэтому предлагаем вам сыграть в бинго разработчика! Правила — простые:

  1. сохраняйте/делайте скрин картинки из поста;

  2. отмечайте клеточки с вашей разработческой жизой;

  3. скидывайте в комментарии итог. Или можете просто писать в комментах то, что хотели бы зачеркнуть в этом бинго, ваши варианты особенно приветствуются)

Ждем того, кто соберет все ачивки!

А как закончите с бинго — в нашем TG‑канале есть еще одна занимательная игра с кубиком и картами инженерного таро, которые предскажут ваше будущее! Переходите по ссылке и развлекайтесь, на канал тоже подписывайтесь, там часто бывает всякое интересное.

Теги:
Всего голосов 22: ↑21 и ↓1+20
Комментарии1

Пора на дело! Ищем аналитиков для расследования преступления

Тут у нас в городе Дашборг (где обычно всё четко и структурировано, как на хорошем дашборде) случился сбой доставок, и всё погрузилось в хаос. Все заказы на пиццу внезапно исчезли, маршруты курьеров перепутаны, а пиццерии в панике. 

Кто-то намеренно стер данные! Мэрия Дашборга принесла все, что от них осталось, и попросила помочь с расследованием. Теперь только крутые аналитики могут разобраться в этом цифровом хаосе. Может, это как раз ты? (¬‿¬ )

Задачи (╭ರ_- ́)
— восстановить пропавшие данные;
— вычислить преступника по цифровым следам;
— распределить компенсацию пострадавшим.

Призы (^-^):
— годовой запас пиццы;
— 10 билетов на конференцию AHA;
— сертификат Ozon на 20 000 рублей;
— подписка на LeetCode и мерч для тех, кто был близок к разгадке.

Прием решений: до 4 апреля
Проверка: с 4 апреля до 11 апреля
Объявим победителей: 14 апреля

> Узнай все детали и забери материалы для расследования здесь: https://t.me/Dashborg_bot

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Ближайшие события

Какие числа останутся? Интересная задача на логику и математику

В ряд выписаны натуральные числа от 1 до 1024. Петя 10 раз проделывает такую операцию: смотрит все оставшиеся числа и вычёркивает половину чисел.

При этом в операции с нечётным номером Петя вычёркивает числа с нечётными номерами (например, в первой операции вычеркнуты числа 1, 3, 5, 7..), а в операции с чётным номером — числа с чётными номерами. Нумерация каждый раз новая.

В конце останется одно число. Какое?

Задача кажется сложной, но если внимательно проследить за процессом, можно заметить закономерность. Попробуйте решить её разными способами:

  • Перебором, выписывая ряды чисел после каждой операции и отслеживая их изменения.

  • Написанием кода, который автоматизирует процесс.

  • Через формулы, если удастся вывести зависимость оставшихся чисел от номера операции.

Какие у вас идеи? Делитесь своими вариантами решения в комментариях. А мы потом вернёмся с ответом.

Больше задач — в бесплатном тренажере «Основы математики для цифровых профессий».

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии3

На картинке — код на JavaScript с ошибкой, который написал специально для Хабра руководитель группы разработки интерфейсов компании «Криптонит» Василий Беляев.

Кто увидел, где ошибка и как её можно решить — пишите в комментариях! А решение этой ошибки оставили под картинкой.

Где здесь ошибка?
Где здесь ошибка?

Если запустим этот код, то получим ошибку

Uncaught TypeError: this.clearHistory is not a function

Проблема находится на строчках 11-13 (на картинке)

this.timeout = setTimeout (function () {
        this.clearHistory();
    }, 0);

Когда мы вызываем setTimeout, то вызываем метод объекта window, и меняем область видимости с нашего конструктора на window ( window.setTimeout() ).

Именно по этой причине у нас метод clearHistory пытается вызываться у объекта window ( window.clearHistory() )

Как можно решить эту проблему?

Вариант 1

const MyItem = function () {
    this.clearStorage = function () {
        console.log ('Очищаем хранилища...');
    };
    this.clearHistory = function () {
        console.log ('Очищаем историю...');
    };
};
MyItem.prototype.refresh = function () {
    this.clearStorage();
    this.timeout = setTimeout (() => {
        this.clearHistory();
    }, 0);
};
const mуItem = new MyItem();
mуItem.refresh();

Заменить анонимную функцию на стрелочную функцию. У них отсутствует свой контекст, и они работают в контексте области видимости, включающий их самих.

Вариант 2

const MyItem = function () {
    this.clearStorage = function () {
        console.log ('Очищаем хранилища...');
    };
    this.clearHistory = function () {
        console.log ('Очищаем историю...');
    };
};
MyItem.prototype.refresh = function () {
    this.clearStorage();
    this.timeout = setTimeout (
        this.clearHistory.bind(this), 0
    );
};
const mуItem = new MyItem();
mуItem.refresh();

Явно передать контекст через метод .bind()

Вариант 3

const MyItem = function () {
    this.clearStorage = function () {
        console.log ('Очищаем хранилища...');
    };
    this.clearHistory = function () {
        console.log ('Очищаем историю...');
    };
};
MyItem.prototype.refresh = function () {
    this.clearStorage();
    const self = this;
    this.timeout = setTimeout (() => {
        self.clearHistory();
    }, 0);
};
const mуItem = new MyItem();
mуItem.refresh();

Выносим контекст в отдельную переменную и работаем с ней. Этот вариант подойдет для поддержки старых браузеров.

А как бы вы решили эту ошибку?

Теги:
Всего голосов 6: ↑3 и ↓3+2
Комментарии5

Задача об утечке паролей

Задача будет полезна начинающим и опытным специалистам по информационной безопасности, а также всем, кто хочет защитить свои данные.

Условие

В компании «ТехноБезопасность» недавно всплыла неприятная ситуация: один из сотрудников каким-то образом заходит под аккаунтами других пользователей.

Специалист по безопасности Дин Завров начал расследование. Изначально он предполагал, что утечка вызвана атаками XSS или CSRF, но лид фронтенд-разработки заверил: подобные уязвимости исключены. Тогда Дин пошел к бэкенд-разработчикам и девопсам, но и они не смогли помочь. Пришлось ему самостоятельно перебирать все популярные варианты утечки паролей.

Задача

Определите, какими способами внутри компании мог произойти несанкционированный доступ к чужим аккаунтам. Предположения о фронтенд-уязвимостях (XSS/CSRF) исключены.

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

Делитесь своими ответами в комментариях. А проверить себя можно в Академии Selectel →

Теги:
Всего голосов 8: ↑7 и ↓1+7
Комментарии2
Рисунок не в масштабе
Рисунок не в масштабе

Найдите x (задача с подвохом).

Подвох в том, что длина нижней стороны треугольника равна 8, а длины двух других сторон в сумме тоже дают 8. Получается, что треугольник вырожденный.

Второй подвох в том, что как только понимаешь, что треугольник вырожденный, хочется сказать, что x = 0. Хотя если подумать немного, становится ясно, что x = 1.

Теги:
Всего голосов 12: ↑12 и ↓0+17
Комментарии3

Решаем задачу про спортзал и логарифмы

Василий увлёкся пауэрлифтингом и начал ходить в спортзал. Василий замерил свой прогресс и оказалось, что он соответствует функции y=12*log₂(x), где x — номер дня с момента начала тренировок, а y — вес (масса), который он поднял в этот день.

Спустя почти год Василий решил оценить свой прогресс. Для этого он сравнил результаты в конце первой недели тренировок и на 343 день. Во сколько раз увеличился поднимаемый им вес за это время?

Ответ ↓↓↓

Задачу можно решить разными способами — используя разные свойства логарифма. Начало у обоих способов одинаковое.

Вес (масса), который может поднимать Василий в день номер x по условию равен 12*log₂(x). Значит, в конце первой недели (на седьмой день) этот вес равен 12*log₂7, а на 343-й день — 12*log₂343. Запишем частное и упростим:

12*log₂343 / 12*log₂7 = log₂343 / log₂7.

Способ 1. Через вынесение степени:

log₂343 / log₂7 =  log₂7³ / log₂7 = 3*log₂7 / log₂7 = 3.

Способ 2. Через переход к новому основанию (в обратную сторону):

log₂343 / log₂7 = log₇343 = 3.

Значит, вес, который поднимает Василий, увеличился в 3 раза. Желаем и вам успехов в спорте!

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Примеряем античную градацию доходов на сегодняшник айтишков.

Disclaimer : данная заметка носит пятничный характер, многие цифры притянуты за уши для красного словца.

Афинский архонт Солон в 6 веке до н.э. разделил население полиса на 4 категории

  1. Пентакосиомедимны

    1. имеют доход более 500 медимн зерна либо 500 метрет вина или оливкового масла

    2. могут избираться архонтами и казначеями

    3. владеют обширными землями и садами

    4. как правило, обладают своими торговыми кораблями

    5. Поэтому в случае войны должны были за свой счет снарядить боевой корабль

  2. Гиппеи

    1. имеют доход свыше 300-500 медимн зерна

    2. имеют достаточно земли чтобы прокормить коня, либо достаточный для этого доход

    3. Поэтому служат в коннице

  3. Зевгиты

    1. имеют доход свыше 200-300 медимн зерна

    2. дохода достаточно для содержания нормального дома

    3. крепкий средний класс - основа греческих полисов

    4. дохода достаточно для покупки оружия и доспехов

    5. Поэтому служат гоплитами - тяжелая пехота

  4. Феты

    1. имеют доход менее 200 медимн зерна

    2. бедные крестьяне или рабочая беднота

    3. едва сводят концы с концами

    4. освобождены от любых налогов, так это для них непосильное бремя

    5. могут участвовать в работе народного собрания и суда присяжных

    6. Поэтому во время войны служат легко вооруженными пехотинцами (их значение в бою невелико) или гребцами во флоте.

    7. рабов на галерах у греков не было, на вёслах сидели бедные но свободные люди

    8. изначально фетов было меньшинство, но постепенно доля бедноты в крупных городах росла

Следует отметить, что данное разделение было установлено в Афинах в 594/593г до н.э., и в 4 веке до н.э. оно начало терять значение.

Теперь подсчитаем сколько же это в современных деньгах?

1 медимн = 52,53 литра (близко к 1 мешку
1 метрет = 39,46 литра

Насыпная плотность пшеницы - 0,8 кг/л
Плотность оливкового масла - 0,915 кг/л

А значит :
1 медимн пшеницы = 42 кг
1 метрет масла = 36 кг

Стоимость 1 кг пшеницы на современном рынке - 0,21 $ (за последние 5 лет колеблется от 470 до 1100 $ за бушель)
Стоимость 1 кг оливкового масла на современном рынке - 5 $ (последние 5 лет она колеблется от 2700 до 10000 $ за метрическую тонну)

Ну а 1$ пусть будет 100руб

Таким образом:
1 метрет масла = 39,46 x 0,915 x 5 = 180$
1 медимн пшеницы = 52,53 x 0,8 x 0,21 = 8,8$

500 метрет масла (13,8 т) = 90 000$
300 метрет масла (8,3 т) = 54 000$
200 метрет масла (5,5 т) = 36 000$

500 медимн зерна (21 т) = 4 400$
300 медимн зерна (12,6 т) = 2 640$
200 медимн зерна (8,4 т) = 1 760$

Средние зарплаты в ИТ:
Junior — 100к руб = 12 000$ год = 66 метрет масла или 1360 медимн пшеницы
Middle — 200к руб = 24 000$ год = 133 метрет масла или 2720 медимн пшеницы
Senior — 300к руб = 36 000$ год = 199 метрет масла или 4080 медимн пшеницы
"Lead" — 750к руб = 90 000$ год = 499 метрет масла или 10200 медимн пшеницы

Курс сейчас скачет как мой пульс после двух чашек кофе, поэтому для тех кто желает точных подсчетов я занёс данные в таблицу

В «пшеничном» эквиваленте всё выглядит прекрасно.
Но если его отбросить и оставить только «масляный», то можно обнаружить интересное наблюдение: пентакосиомедимном может считаться только специалист с доходом более 90k$ в год, а вот линейные разработчики относятся к городской бедноте, поэтому гребут на галерах.

UPD :

Для справки: годовая норма потребления пшеницы на душу населения — 1 тонна (24 медимны), но эта цифра включает также пропитание домашней птицы и скота.

Люди на планете, в зависимости от региона, съедают от 60 до 200 кг пшеницы в год.

Источники:
Реформы Солона - https://ru.wikipedia.org/wiki/Солон#Реформы_Солона
Пентакосиомедимны - https://ru.wikipedia.org/wiki/Пентакосиомедимны
Очерки рабовладельческого строя - https://alex-rozoff.livejournal.com/737761.html
14 вопросов о древней Греции - https://arzamas.academy/mag/980-greece
Фьючерсы на пшеницу - https://ru.investing.com/commodities/us-wheat
Цены на оливковое масло - https://ycharts.com/indicators/olive_oil_price
Потребление пшеницы в мире - https://worldpopulationreview.com/country-rankings/wheat-consumption-by-country

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии6

Задача об IP-адресах и забывчивых сотрудниках

Задача для всех, кто увлекается темой сетей и логикой.

Условие

Руководство компании придумало, как повысить эффективность департамента, и разделило его на отделы поменьше. Так появилось четыре команды: автоматизации, эксплуатации, дебаггинга и общего администрирования.

На еженедельной встрече руководитель рассказал сотрудникам, кто и в какую команду переходит. Но шестеро коллег все забыли: Аркадий, Елисей, Ангелина, Юрий, Яна и Мирон. Они знают только свои новые IP-адреса, записанные на стикерах.

  • 10.41.2.176/29 — Юрий; 

  • 10.10.9.222/29 — Аркадий;

  • 10.10.9.218/29 — Яна;

  • 10.35.87.8/25 — Ангелина;

  • 10.41.2.178/29 — Мирон;

  • 10.10.9.227/29 — Елисей.

Также известно, что в администрировании два человека, один из которых неправильно записал последнюю цифру своего адреса. В эксплуатацию также двое, а в дебаге — девушка.

Задача

Помогите определить, в какие команды попали сотрудники компании.

Делитесь своими ответами в комментариях. А проверить себя можно в Академии Selectel

Теги:
Всего голосов 10: ↑9 и ↓1+9
Комментарии9

Вклад авторов