Кстати, а что если рассматривать это не в контексте английского языка, а в контексте языка, у которого средняя длина слова короче, чем в английском? Хотя такая зависимость в любом случае будет линейной... (Возьмите самое длинное английское слово, в другом языке слово не может быть короче одного символа, это соотношение и будет показывать максимум соотношения длин)
Так и человек в тех же шахматах на самом деле перебирает варианты (насчет Го не скажу). Шахматисты играют кучу партий и запоминают позиции. По существу, шахматы и для человека сводятся к распознаванию паттернов и анализу предыдущего опыта игр.
В шахматах есть похожий момент, игроки часто осознанно выбирают не лучший ход, а просто хороший потому что:
1) У лучшего хода может быть одна и только одна линия, дающая преимущество, требующая очень высокий уровень точности игры. Если контроль времени не классический, то это может оказаться критической проблемой
2) Ход похуже может наоборот создать оппоненту сложности в выборе правильного ответа, опять-таки в ситуации малого времени.
Сами разработчики Go говорят, что их язык не то, чтобы ООП. Да, в нем есть черты, присущие ООП, как вы обозначили, полиморфиизм возможен, своего рода наследования тоже возможно. Но это, скорее делает Go языкоп OOП-like, а не полноценно ООП языком. Вот цитата с сайта Go
Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy. The concept of “interface” in Go provides a different approach that we believe is easy to use and in some ways more general. There are also ways to embed types in other types to provide something analogous—but not identical—to subclassing. Moreover, methods in Go are more general than in C++ or Java: they can be defined for any sort of data, even built-in types such as plain, “unboxed” integers. They are not restricted to structs (classes).
А какая бесконечность не будет счётной? Например, множество действительных чисел, которые существуют между 0 и 1. Это можно увидеть следующим образом: возьмите последовательность натуральных чисел — 1, 2, 3, 4, 5 и т. д. — и возьмите их взаимно обратные числа. Что вы получите? Получится ряд, который выглядит следующим образом:
1, ½, ⅓, ¼, ⅕, ⅙, ⅐, ⅛ и т. д.
Обратите внимание, что как бы далеко вы ни заходили, вы всегда получаете число, большее 0, но меньшее 1. Другими словами, существует бесконечное количество чисел между 0 и 1, и всё же это не все числа. Например, не включено всё, что находится между ½ и 1. Иррациональные числа, такие как 1/e, π/4 или √½, также не включены. Множество действительных чисел от 0 до 1 является примером второго типа «бесконечного количества», которое известно как несчётная бесконечность.
Простите, а как это доказывает несчетность отрезка ]0, 1[?
Чтобы в этом убедиться, разобьём -й гекс на "концентрических" слоёв: первый слой - центр из одной точки, на втором слое 6 точек, на третьем - , на -м - . Итого, число точек на -м гексе равно
Это утверждение, конечно, верно, но хотелось бы увидеть его обоснование.
Тогда, если массив имеет ввид [a_0, ..., a_(n-1)] и отсортирован в обратном порядке, то:
для a_0 мы сравним с a_1, поменяем их, начнем заново. Получим [a_1, a_0, ..., a_(n-1)]. Затем пройдем два раза, получая [a_1, a_2, a_0, ..., a_(n-1)]. и получим [a_2, a_1, a_0, ..., a_(n-1)] А дальше интересно. После того как мы поменяем a_3 с a_0, то получим [a_2, a_1, a_3, a_0, ...] и надо будет еще два цикла (два раза сбросить idx в ноль, чтобы поставить a_3 на положенный ему индекс.
Сейчас немного формализую. Пусть a[i], 0 <= i < n, -- наш массив. Пусть i*(1) - адрес первого элемента, такого что a[i*(1)] > a[i*(1)+1]. Тогда Цикл while потребует i*(1) сравнений перед тем как это обнаружить, поменять элементы и затем сбросить счетчик. То есть потребуется i*(1) операций для того, чтобы получить массив вида: [..., a[i*(1)+1], a[i*(1)], ...] Дальше две ветки: либо cлайс a[0]...a[i*(1)] отсортирован и мы идем дальше, либо a[i*(1)-1] > a[i*(1)+1] и тогда потребуется i*(1)-1 операций, чтобы и эту пару поменять. А если каждый предыдущий, то потребуется
операций, чтобы получить [..., a[i*(1)]...] как отсортированный подмассив (мы все еще не знаем отсортировано ли то, что дальше a[i*(1)]. Эта сумма -- квадратичного порядка. Дальше, такая ситуация теоретически может повториться вплоть n-1 раз, откуда и получаем порядок третьей степени. Я, может, даже набросаю подсчет.
Кстати, а что если рассматривать это не в контексте английского языка, а в контексте языка, у которого средняя длина слова короче, чем в английском? Хотя такая зависимость в любом случае будет линейной... (Возьмите самое длинное английское слово, в другом языке слово не может быть короче одного символа, это соотношение и будет показывать максимум соотношения длин)
Так и человек в тех же шахматах на самом деле перебирает варианты (насчет Го не скажу). Шахматисты играют кучу партий и запоминают позиции. По существу, шахматы и для человека сводятся к распознаванию паттернов и анализу предыдущего опыта игр.
В шахматах есть похожий момент, игроки часто осознанно выбирают не лучший ход, а просто хороший потому что:
1) У лучшего хода может быть одна и только одна линия, дающая преимущество, требующая очень высокий уровень точности игры. Если контроль времени не классический, то это может оказаться критической проблемой
2) Ход похуже может наоборот создать оппоненту сложности в выборе правильного ответа, опять-таки в ситуации малого времени.
А какая разница...
Hidden text
Вроде нормально нарисовало. Все расы представлены.
Немецкого солдата теперь отказывается, но итальянцев похоже сгенерировала. Может, уже подкрутили что-то.
Сами разработчики Go говорят, что их язык не то, чтобы ООП. Да, в нем есть черты, присущие ООП, как вы обозначили, полиморфиизм возможен, своего рода наследования тоже возможно. Но это, скорее делает Go языкоп OOП-like, а не полноценно ООП языком. Вот цитата с сайта Go
Как раз таки при обычном вычислении 0^0 это неопределенность. Это (x^0) при x = 0 или (0^x) при x = 0?
Ну это да, но я же и не ставил целью показать идиоматический и кошерный способ :)
Можно даже интерфейс при большом желании не делать! Вот так можно сделать:
Конечно, интерфейс понадобится чтобы взаимодействовать с полями и вообще иметь о них представление, но все же.
Да и зачем искать ООП паттерн в не-ООП языке...
Простите, а как это доказывает несчетность отрезка ]0, 1[?
Чтобы в этом убедиться, разобьём
-й гекс на
"концентрических" слоёв: первый слой - центр из одной точки, на втором слое 6 точек, на третьем -
,
на
-м -
. Итого, число точек на
-м гексе равноЭто утверждение, конечно, верно, но хотелось бы увидеть его обоснование.
Вы уверены?
Давайте так. Гитхаб не блокирует, нарушает американский закон, блокируют гитхаб. Вы будете счастливы?
Тема не раскрыта.
Снова добавлю: провел подсчет поточнее. Число операций для массива, отсортированного изначального по убыванию описывается формулой:

UPD: не заметил, оверфлоу уже на 2000
https://pastebin.com/8gqxhtqB
Вот примерная реализация. Вот некоторые исполнения:
n: 10; n^3: 1000; ops: 174; log_n(ops): 2.24055
n: 100; n^3: 1000000; ops: 166749; log_n(ops): 2.61103
n: 1000; n^3: 1000000000; ops: 166667499; log_n(ops): 2.74062
n: 2000; n^3: -589934592; ops: 1333334999; log_n(ops): 2.76427
Дальше не исполнял (после 4000 там уже из-за оверфлоу проблемы), но можно увидеть, что логарифм от числа операций по базе n приближается к трем.
Некропостер 2.
Пусть мы пишем сортировку вот таким псевдокодом:
Тогда, если массив имеет ввид [a_0, ..., a_(n-1)] и отсортирован в обратном порядке, то:
для a_0 мы сравним с a_1, поменяем их, начнем заново. Получим
[a_1, a_0, ..., a_(n-1)].
Затем пройдем два раза, получая
[a_1, a_2, a_0, ..., a_(n-1)].
и получим
[a_2, a_1, a_0, ..., a_(n-1)]
А дальше интересно. После того как мы поменяем a_3 с a_0, то получим
[a_2, a_1, a_3, a_0, ...]
и надо будет еще два цикла (два раза сбросить idx в ноль, чтобы поставить a_3 на положенный ему индекс.
Сейчас немного формализую. Пусть a[i], 0 <= i < n, -- наш массив. Пусть i*(1) - адрес первого элемента, такого что a[i*(1)] > a[i*(1)+1]. Тогда
Цикл while потребует i*(1) сравнений перед тем как это обнаружить, поменять элементы и затем сбросить счетчик. То есть потребуется i*(1) операций для того, чтобы получить массив вида:
[..., a[i*(1)+1], a[i*(1)], ...]
Дальше две ветки: либо cлайс a[0]...a[i*(1)] отсортирован и мы идем дальше, либо a[i*(1)-1] > a[i*(1)+1] и тогда потребуется i*(1)-1 операций, чтобы и эту пару поменять. А если каждый предыдущий, то потребуется
операций, чтобы получить [..., a[i*(1)]...] как отсортированный подмассив (мы все еще не знаем отсортировано ли то, что дальше a[i*(1)]. Эта сумма -- квадратичного порядка. Дальше, такая ситуация теоретически может повториться вплоть n-1 раз, откуда и получаем порядок третьей степени. Я, может, даже набросаю подсчет.
Ну, обычно диски лежат дома в благоприятной им среде, а не в среде, где куча жидкостей всех видов, гноя и прочей разлагающейся органики
С чисто математической точки зрения один цент в неопределенное раз больше нуля центов.