Почему на флагах стран нет розового цвета
На флагах всех стран мира используется более 500 оттенков цветов. При этом на флаге конкретной страны встречается от двух до восьми цветов. Например, двухцветные флаги у Албании, Дании или Польши, а восьмицветные — у Британских Виргинских Островах или у Гватемалы.
Флаг Австрии
Флаг Албании
Флаг Гватемалы
Флаг страны Британские Виргинские острова
Подсчитано, что чаще всего на флагах стран встречается белый цвет — 17,7%, затем следует различные оттенки красного — 17%, и вместе они встречаются на флагах примерно трети стран мира. Черный цвет можно найти на 5,5% флагах стран, оттенки синего и голубого — у 18% государств. Так же часто встречаются зеленый и желтый.
Одна из причин популярности этих цветов — это символизм. Например, в культуре многих стран белый цвет ассоциируется с чистотой; зеленый — с надеждой; красный обозначает жертвенность, силу и свободу; голубой или синий цвет — верность, честность, безупречность.
Однако, такую популярность отдельных цветов можно объяснить и их природным происхождением.
Раньше белый цвет можно было получить на ткани из льна, хлопка — наиболее используемых в Старом Свете видов ткани; красный — из ягод, личинок червей; голубой — из крошки стекла и меди; синий — из лазурита или краски осьминога; черный — из угля.
Кроме того, белый (серебряный) и желтый (золотой) цвета — основные металлы в европейской геральдике.
Но есть цвета, которые на флагах практически не встречаются — это фиолетовый, серый, бежевый, розовый, коричневый. И причины тому то же разные.
Одна из причин — дороговизна некоторых природных красителей. Например, фиолетовый краситель для ткани раньше получали только из одного вида морских улиток, обитающих в Средиземном море. Для того, чтобы получить всего 70 грамм фиолетового красителя, требовалось переработать 10 тысяч моллюсков. Следовательно, ткань фиолетового цвета была очень дорогой, и использовать ее могли позволить себе только очень богатые люди.
Только к середине XIX века английскому химику Генри Перкин удалось синтезировать фиолетовую краску. После чего фиолетовый цвет стал появлять на флагах некоторых стран, да и то только в отдельных элементах, например на флаге Содружества Доминики в оперении птицы или на флаге Никарагуа — в радуге, так как это цвет часто использовался в траурных церемониях, и на флаге государства такой цвет считался неуместным.
Флаг Доминики
Флаг Никарагуа
Серый цвет не используется часто потому, что он выглядит как грязно-белый, и хотя он похож на серебрянный цвет, который является геральдическим, на полотнище флага серебро эффектнее изображать белым цветом.
Коричневый, бежевый, розовый цвета не являются геральдическими цветами, и поэтому не использовались при создании военных знамен, и позже эта традиция сохранилась при создании флагов.
Сортировка «Американский флаг» / Хабр
Чтобы понять принцип действия этой «многополосной» сортировки проще для начала разобраться на примере флага с тремя полосами. А чтобы легко разобраться с трёхцветным флагом, лучше сначала посмотреть, как это работает на примере двухцветного.
Статья написана при поддержке компании EDISON.Мы занимаемся портированием и миграцией программного обеспечения, а также разработкой мобильных приложений Android и iOS.
Мы очень любим теорию алгоритмов! 😉
Двухцветный флаг
Для начала рассмотрим случай, когда числа в сортируемом массиве распределяются всего по двум разрядам. Для простоты примем, что у нас массив, состоящий из нулей (младший разряд) и единиц (старший разряд).
Таким образом у нас всего две «полосы»: в одну мы будем перемещать младшие разряды (нули), а в другую старшие разряды (единицы). Для демонстрации пойдёт любой двухцветный флаг. Например, флаг Украины.
Что тут происходит? Так как на первом этапе неизвестно, сколько у нас нулей и сколько единиц, поэтому непонятно, каких размеров в итоге окажется каждая из «полос». Поэтому ставим на ключи массива два указателя. Для младшего разряда указатель установлен на начало массива, для старшего — в конец. Затем делаем однократный проход по массиву слева-направо и смотрим каждый разряд-элемент.
Если при проходе элемент равен старшему разряду, то второй указатель нам подсказывает, куда нужно перенести этот элемент (производим обмен). Указатель для вставки следующего элемента перемещается влево, «полоса» для старшего разряда расширилась.
Если он равен младшему разряду, то указатель для него перемещаем на один элемент вправо. Так как у нас всего два разряда, перенесить элемент не приходится, он уже на своём месте. «Полоса» для младшего разряда естественным образом стала шире.
В итоге два указателя, движущихся навстречу друг другу, столкнутся в одной точке, а разряды будут упорядочены в своих «полосах». При этом не понадобится проход по всему массиву — когда произойдёт встреча указателей где-то в середине, алгоритм выполнит свою работу.
Задача национального голландского флага :: Dutch national flag problem
Слегка усложним задачу, рассмотрим не два разряда, а три. Пусть у нас элементы массива относятся к младшему (нули), среднему (единицы) и старшему (двойки) разрядам.
Для демонстрации возьмём трёхполосный красно-бело-синий флаг Франции Люксембурга России Шлезвиг-Гольдштейна Нидерландов. Почему именно флаг Нидерландов? Потому что Эдсгер Дейкстра в своих лекциях именно на примере этого флага рассмотрел соответствующий алгоритм, который был назван как «задача голландского национального флага».
Как видите, тут ничего особо нового. Для каждого разряда свой указатель. Изначально метки для младшего и среднего занимают стартовые позиции в начале массива и перемещаются вправо, когда встречается соответствующий элемент. Указатель для старшего разряда сначала находится в конце массива и движется влево.
Проход по массиву также по факту будет неполный, если разряды распределены более-менее равномерно, то алгоритм пройдёт 2/3 массива, прежде чем раскидает все элементы по своим «полосам».
Сортировка «Американский флаг» :: American flag sort
Теперь в наших объяснениях можно перейти к многополосному американскому флагу.
Когда у нас не два, не три, а любое количество разрядов, мы фиксируем, где должен начинаться каждый разряд (его «полоса») и перераскидываем элементы по своим «полосам».
В этом алгоритме числа обычно рассматриваются не как десятичные, а в другой разрядности, чаще всего являющейся степенью двойки. Зачастую в качестве основания для разрядности берётся число 256 (несколько реже 128), что позволяет эффективно адаптировать сортировку для упорядочивания строк. Для чисел разрядность удобнее брать небольшие 2n (2, 4, 16 и т.д), что позволяет сравнивать путём сдвига по битам, вместо возведения в степень при сравнении десятичных чисел.
В анимации показано на примере разрядности с основанием 16:
- При первом проходе — поиск максимума с целью определить максимальное количество разрядов среди элементов в массиве (для того чтобы корректно извлекать определённые по счёту разряды из элементов).
- Затем происходит рекурсивная обработка. При вызове указываются границы подмассива и текущий обрабатываемый разряд.
- Среди элементов подмассива осуществляется начальный подсчёт — сколько раз каждая цифра встречается в текущем разряде. Этот посдчёт позволяет определить локализации для этих цифр разрядов (т.е. известны пределы и местонахождение «полосы», в которую нужно переместить те элементы, которые имеют очередную цифру в определённом разряде). Собственно, локализации — это указатели на «полосы», куда нужно перемещать соответствующие элементы.
- В соответствии с локализациями-указателями происходит обмен на месте — по цифре в разряде видно, куда нужно отправить элемент, на его место приходит другой элемент, с которым произошёл обмен. Этот пункт выполняется до тех пор, пока при очередном обмене пришедший из другого места элемент не окажется на своём месте (тогда можно переходить к следующему элементу подмассива и аналогично для него выполнить этот пункт).
- После того, как в результате обменов перераспределили элементы в блоки по цифрам в очередном разряде, происходит рекурсия — к каждому блоку как к подмассиву применяется этот же алгоритм, в качестве текущего разряда берётся следующий по счёту.
В статье про подсчётные сортировки с приблизительным распределением есть визуально очень похожий алгоритм — сортировка аппроксимацией. Там мы подсчитывали сколько раз встречалось каждое число в массиве — и перераспределяли элементы в соответствии с полученными локализациями. Здесь считаем сколько раз встречается каждая цифра в разряде для элементов подмасива — и тоже перераспределяем элементы в подмассиве в соответствии с полученными локализациями. Если аппроксимация — разновидность сортировки подсчётом, то «американка» — это подсчётно-разрядная сортировка.
Сортировка «Американский флаг» — реализация на Python
# Для числа определяем какая цифра в указанном разряде принятой разрядности def get_radix_val(x, digit, radix) -> int: return int(floor(x / radix**digit)) % radix # Для каждой цифры в разряде определяем локализацию для данного разряда принятой разрядности def compute_offsets(a_list, start: int, end: int, digit, radix) -> list: # Подготовка пустого массива для количеств встретившихся цифр в разряде counts = [0 for _ in range(radix)] for i in range(start, end): # Перебираем элементы подмассива на данном уровне рекурсии # Какая цифра в разряде у этого элемента массива val = get_radix_val(a_list[i], digit, radix) counts[val] += 1 # Подсчёт количеств встретившихся цифр в разряде # Подготовка пустого массива для локализаций встретившихся цифр в разряде offsets = [0 for _ in range(radix)] sum = 0 # Зная количества для всех разрядов подсчитываем локализации разрядов for i in range(radix): offsets[i] = sum sum += counts[i] return offsets # Обмены в подмассиве согласно локализации def swap(a_list, offsets, start: int, end: int, digit, radix) -> None: i = start # С какого элемента будем в цикле просматривать подмассив вправо next_free = copy(offsets) # Копируем массив локализаций для поиска свободных мест # Перебираем разряды (которые определяют блоки элементов массива с этими разрядами) cur_block = 0 while cur_block < radix-1: # if i >= start + offsets[cur_block+1]: cur_block += 1 continue radix_val = get_radix_val(a_list[i], digit, radix) if radix_val == cur_block: i += 1 continue swap_to = next_free[radix_val] a_list[i], a_list[swap_to] = a_list[swap_to], a_list[i] next_free[radix_val] += 1 # Рекурсивно сортируем def american_flag_sort_helper(a_list, start: int, end: int, digit, radix) -> None: # Для элементов подмассива для каждой разрядной цифры определяем локализацию offsets = compute_offsets(a_list, start, end, digit, radix) # Обмены в подмассиве согласно локализации swap(a_list, offsets, start, end, digit, radix) if digit == 0: # Реурсия спустилась к последнему разряду? return # Рекурсия завершена # Если ещё не вышли из рекурсии for i in range(len(offsets)-1): #Перебираем массив локализаций для чисел разряда # Рекурсия к каждому промежутку между локализациями чисел разряда american_flag_sort_helper(a_list, offsets[i], offsets[i+1], digit-1, radix) # Основная процедура def american_flag_sort(a_list, radix) -> None: #Следим, чтобы в сортируемом массиве были только целые числа for x in a_list: assert(type(x) == int) # Максимум в массиве max_val = max(a_list) # Максимальное количестве разрядов (берём из максимума) max_digit = int(floor(log(max_val, radix))) # Рекурсивно сортируем - сначала охватываем весь массив american_flag_sort_helper(a_list, 0, len(a_list), max_digit, radix)
Ска-сортировка :: Ska sort
Немецкий программист Мальте Скарупке (Malte Skarupke) заявил о том, что разработал новый алгоритм сортировки, являющийся кардинально усовершенствованным «американским флагом» и в среднем в 2 раза обгоняющий std::sort (std::sort — алгоритм, также известный, как интроспективная сортировка — гибрид быстрой сортировки и сортировки кучей).
- Массив сортируется рекурсивно, на первом уровне рекурсии в качестве подмассива берётся весь массив.
- Если в подмассиве менее 128 элементов, то для него вызывается std::sort.
- Если в подмассиве более 1024 элементов, то для него вызывается ска-сортировка.
- Также, во избежания худшего случая, если слишком большая рекурсивная вложенность (более 16-ти уровней), алгоритм переключается на std::sort, даже если в подмассиве более 128 элементов.
Судя по всему, очень эффективный алгоритм и в то же время крайне сложный — его авторская имплементация занимает почти полторы тысячи строк. Возможно, рассмотрим эту сортировку когда-нибудь, сейчас в неё углубляться не будем. Заинтересовавшиеся могут пройти по ссылкам, указанным ниже.
Ссылки
Dutch national flag problem, American flag sort
Ska sort: I Wrote a Faster Sorting Algorithm (Part 1, Part 2) GitHub code
Статьи серии:
- Excel-приложение AlgoLab. xlsm
- Сортировки обменами
- Сортировки вставками
- Сортировки выбором
- Сортировки слиянием
- Сортировки распределением
- Подсчётные сортировки с приблизительным распределением
- Сортировка «Американский флаг»
- Суффиксное дерево в поразрядных сортировках
- Сравнение сортировок распределением
- Гибридные сортировки
В Excel-приложение AlgoLab появились сортировка двухцветным флагом (сортирует нули и единицы), трёхцветным флагом (сортирует нули, единицы и двойки), сортировка американским флагом. Для сортировки «Американский флаг» можно (в комментарии к ячейке с названием алгоритма) указать систему счисления для распределения — по умолчанию используется 16-ричная.
Двухцветные флаги — Wikimedia Commons
Взято из Викисклада, бесплатного репозитория медиафайлов
Перейти к навигацииПерейти к поиску
Английский: Это галерея из двухцветных флагов с полями, разделенными по горизонтали, вертикали или диагонали на разные цвета подполя. Обратите внимание, что общее количество цветов на таких флагах может быть больше двух из-за бахромы или порчи.
Bahasa Indonesia: Ini adalah sebuah galeri Bendera dwiwarna dengan bagian-bagian yang terbagi menjadi dua sub-bagian berbeda warna secara горизонтальное, вертикальное, диагональное ataupun. Ketahuilah bahwa jumlah total warna dalam Bendera bisa saja lebih dari dua, lewat fimbriasi ataupun , порча (penambahan simbol lain dalam suatu Bender).
Содержимое
- 1 Вертикальный двухцветный
- 1.1 Двухцветный вертикальный дефейс
- 1.2 Бахромчатый вертикальный биколор с дефейсом
- 2 Горизонтальный двухцветный
- 2.1 Горизонтальный двухцветный дефейс
- 2.2 Бахромчатый горизонтальный двухцветный
- 2.3 Бахромчатый горизонтальный биколор с дефейсом
- 3 Диагональ биколор
- 3.1 Диагональ дефейс двухцветная
- 3.2 Двухцветный диагональный бахромчатый дефацированный
Вертикальный двухцветный[править]
Искаженный вертикальный двухцветный[править]
Флаг Аргау
Флаг Алжира
Военно-морской флаг Алжира
Флаг Аликанте
Флаг Анцио
Флаг Азорских островов
Флаг Бакингемшира
Флаг канадской береговой охраны
Флаг Кастилии-Ла-Манча
Флаг нации команчей, Оклахома, США
Флаг Коннахта, Ирландия
Флаг Восточного райдинга Йоркшира
Флаг Женевы
Флаг Гранады
Флаг Гаити (1964-1986)
Флаг Флагов Мира
Флаг Юры
Флаг Хмельницкой области, Украина
Флаг Кировоградской области, Украина
Флаг Клайпеды, Литва
Флаг Кривого Рога, Украина
Флаг Малаги
Флаг Мальты
Флаг Монмутшира
Флаг Наксара
Флаг Норильска
Флаг Пакистана
Флаг Параибы, Бразилия
Флаг Португалии
Флаг Рабата, Мальта
Флаг Ростова-на-Дону
Флаг Сантьяго, Чили
Неофициальный флаг Суррея
Флаг Трентона, Нью-Джерси
Комиссионный вымпел Национального управления океанических и атмосферных исследований для судов класса I
(США)Комиссионный вымпел Национального управления океанических и атмосферных исследований для судов класса II, III и IV
(США)Флаг Вале
Флаг Вальпараисо, Чили
Флаг Ватикана
Флаг езидов
Вертикальный двуцветный бахромчатый
Двухцветный горизонтальный
Флаг Аахена
Флаг Альхесираса
Флаг Антиокии
Флаг Арауки
Флаг Ассизи
Флаг земли Баден-Вюртемберг
Флаг Баварии
Флаг Бохума
Флаг Богемии
Флаг герцогства Брансуик
Флаг Бургенланда
Флаг Ческе-Будеевице
Флаг Хемница
Флаг Хожува
Флаг Чешской Силезии
Флаг ICS эхо
Флаг Фрибурга
Флаг Гуахиры
Флаг Габсбургов
Флаг Гааги
Флаг Гессена
Гражданский флаг и флаг Гаити
Флаг Индонезии
Флаг Кашубии
Флаг Кошалина
Флаг Кракова
Флаг Ла-Паса, Боливия
Флаг Легницы
Флаг Нижней Австрии
Флаг Лукки
Флаг Люцерна
Флаг Медельина
Флаг Медины-Сидонии
Флаг Монако
Флаг Мюнхена
Флаг Намюра
Флаг Нариньо
Флаг Неймегена
Флаг Нореньи
Флаг Нововодохского района, Украина
Флаг Ополе
Флаг Остенде
Флаг Падерборна
Флаг Паханга
Флаг Перлиса
Флаг Польши
Флаг Праги
Флаг Претории, Южная Африка
Флаг Реймса
Флаг Рурмонда
Флаг народа саков и лис
Флаг Зальцбурга (государственный)
Флаг Саксонии
Флаг Саксонии-Анхальт
Исторический флаг Силезии
Флаг Шевченковского района, Украина
Флаг Славонии
Флаг Золотурна
Флаг Штирии
Неофициальный флаг Земли Секеев
Флаг Тапиа-де-Касарьего
Флаг Тессина
Флаг Тюрингии
Флаг Толимы
Флаг Тироля
Флаг Украины
Флаг Верхней Австрии
Флаг Верхней Силезии
Флаг Валье-дель-Каука
Флаг Форарльберга
Флаг Вены
Флаг Варшавы
Флаг Вроцлава
Флаг Зандвоорта
Флаг Злоторыи, Польша
Обезображенный горизонтальный двухцветный шрифт
Военно-морской флаг Албании
Флаг Александрии
Флаг Анголы
Флаг Арнема
Флаг Главнокомандующего ВМС Австралии
Флаг Беларуси
Флаг Бенина
Флаг Боготы
Флаг Бранденбурга
Флаг Буркина-Фасо
Флаг Бургоса
Флаг Каира
Армейский флаг Китайской Народной Республики
Флаг ВВС Китайской Народной Республики
Флаг Кельна
Флаг Консепсьона, Чили
Флаг графства Дарем
Флаг Чехии
Флаг Дармштадта
Флаг Джибути
Флаг Донецка
Флаг Дортмунда
Флаг Дуйсбурга
Флаг Дюссельдорфа
Флаг Эльблонга
Флаг Эссена
Флаг Гибралтара
Флаг Гливице
Флаг Гренландии
Флаг Хагена
Флаг Галле (Заале)
Флаг Гаити
Флаг Хэмпшира
Флаг Джексонвилля, Флорида
Флаг Фронта освобождения Джамму Кашмира, Индии и Пакистана,
Флаг Касселя
Флаг Катовице
Флаг Хабаровского края, Россия
Флаг Ханты-Мансийского автономного округа, Россия
Флаг Лейпцига
Флаг Лихтенштейна
Флаг Лодзи
Флаг Любека
Флаг Мадагаскара
Флаг Маркизских островов, Французская Полинезия
Флаг Нуэва-Бискайя, Филиппины
Флаг Нюрнберга
Флаг Обвальдена
Флаг Оффенбаха-на-Майне
Флаг Орландо, Флорида
Флаг Филиппин
Флаг Потсдама
Флаг штата Ракхайн, Мьянма
Флаг Риги
Флаг народа рома
Флаг Сан-Марино
Флаг Сантандера
Флаг Саскачевана
Флаг Сингапура
Флаг Синт-Мартена
Флаг Южного Котабато, Филиппины
Флаг Суздаля
Флаг Трентино-Альто-Адидже/Южный Тироль
Флаг Трира
Флаг Украинской Советской Социалистической Республики
Флаг Во
Прапорщик Вьетнамского народного флота
Флаг Уэльса
Флаг Забайкальского края, Россия
Флаг Закарпатской области, Украина
Флаг Зуррика
Рифленый горизонтальный двухцветный[править]
Флаг Татарстана
Обезображенный двухцветный горизонтальный бахромчатый
Двухцветный диагональный
Флаг Бутана
Флаг Военно-морского флота Канады
Флаг департамента Касанаре, Колумбия
Флаг острова Рождества, Австралия
Флаг Днепропетровской области, Украина
Флаг Французской Гвианы (бывший официальный флаг ныне расформированного Генерального совета заморского департамента Франции)
Флаг провинции Чеджу, Южная Корея
Флаг Мадонского района, Латвия
Флаг Папуа-Новой Гвинеи
Флаг региона Сицилия, Италия
Флаг кантона Тургау, Швейцария
Флаг коменданта береговой охраны США
Флаг Службы охраны рыбных ресурсов и дикой природы США.
Дефейсированные бахромчатые диагональные двухцветные
Двухцветные флаги — Викисклад
Взято из Викисклада, бесплатного репозитория медиафайлов разделить по горизонтали, вертикали или диагонали на подполя разного цвета. Обратите внимание, что общее количество цветов на таких флагах может быть больше двух из-за бахромы или порчи.
Бахаса Индонезия: Ini adalah sebuah galeri Bendera dwiwarna dengan bagian-bagian yang terbagi menjadi dua sub-bagian berbeda warna secara горизонтальный, вертикальный, ataupun диагональный. Ketahuilah bahwa jumlah total warna dalam Bendera bisa saja lebih dari dua, lewat fimbriasi ataupun , порча (penambahan simbol lain dalam suatu Bender).
Содержимое
- 1 Вертикальный двухцветный
- 1.1 Двухцветный вертикальный дефейс
- 1.2 Бахромчатый вертикальный биколор с дефейсом
- 2 Горизонтальный двухцветный
- 2.1 Горизонтальный двухцветный дефейс
- 2.