Результаты поиска
Функция для создания цветных колес
Это то, что я псевдо-решал много раз и никогда не находил полного решения.
Проблема заключается в том, чтобы придумать способ генерирования N цветов, которые будут максимально различимы, когда N является параметром.
Самый эффективный код для первых 10000 простых чисел?
Я хочу напечатать первые 10000 простых чисел. Может ли кто-нибудь дать мне наиболее эффективный код для этого? Очищения:
- Это не имеет значения, если ваш код неэффективен для n >10000.
- Размер кода не имеет значения.
- Вы не можете просто жестко кодировать значения любым способом.
Решение линейного уравнения
Мне нужно программно решить систему линейных уравнений в C, Objective C или (при необходимости) C++.
Вот пример уравнений:
-44.3940 = a * 50.0 + b * 37.0 + tx
-45.3049 = a * 43.0 + b * 39.0 + tx
-44.9594 = a * 52.0 + b * 41.0 + tx
Исходя из этого, я хотел бы получить наилучшее приближение для a , b и tx .
Эффективно получить сортированные суммы отсортированного списка
У вас есть восходящий список чисел, какой самый эффективный алгоритм вы можете придумать, чтобы получить восходящий список сумм каждых двух чисел в этом списке. Дубликаты в полученном списке не имеют значения, вы можете удалить их или избежать их, если хотите.
Чтобы быть ясным, меня интересует алгоритм. Не стесняйтесь размещать код на любом языке и парадигме, которые вам нравятся.
Последующие действия: "Sorting" цветов по различительности
Если вам дано N максимально удаленных цветов (и некоторая связанная метрика расстояния), можете ли вы придумать способ сортировки этих цветов в некотором порядке, чтобы первые M также были разумно близки к максимально отличному набору?
Другими словами, учитывая кучу различных цветов, придумайте порядок, чтобы я мог использовать столько цветов, сколько мне нужно, начиная с самого начала, и быть разумно уверенным, что все они различны и что соседние цвета также очень различны (например, синевато-красный не рядом с красновато-синим).
Рандомизация-это OK, но, конечно, не оптимально.
Уточнение: учитывая некоторый большой и визуально различимый набор цветов (скажем, 256 или 1024), я хочу отсортировать их так, чтобы при использовании первого, скажем, 16 из них я получал относительно визуально различимое подмножество цветов. Это эквивалентно, грубо говоря, тому, что я хочу отсортировать этот список 1024 так, чтобы чем ближе отдельные цвета визуально, тем дальше они находятся в списке.
Создание удобочитаемых представлений целого числа
Вот проблема кодирования для тех, кто любит такие вещи. Давайте посмотрим ваши реализации (на вашем языке выбора, конечно) функции, которая возвращает читаемое человеком строковое представление указанного целого числа. Например:
- humanReadable (1) возвращает "one".
- humanReadable (53) возвращает "fifty-three".
- humanReadable (723603) возвращает "seven hundred and twenty-three thousand, six hundred and three".
- humanReadable(1456376562) возвращает "один миллиард четыреста пятьдесят шесть миллионов триста семьдесят шесть тысяч пятьсот шестьдесят два".
Бонусные баллы за особо умные / элегантные решения!
Это может показаться бессмысленным упражнением, но есть ряд реальных приложений для такого алгоритма (хотя поддержка чисел до миллиарда может быть излишней :-)
Разработка календарной системы наподобие Google Calendar
Мне нужно создать что-то похожее на Google Календарь, поэтому я создал таблицу событий, которая содержит все события для пользователя.
Самое сложное-это обработка повторных событий, строка в таблице событий имеет поле event_type, которое говорит вам, что это за событие, так как событие может быть только для одной даты, OR повторное событие каждые x дней.
Основная задача проектирования-это обработка повторных событий.
Когда пользователь просматривает календарь, используя представление месяца, как я могу отобразить все события за данный месяц? Запрос будет сложным, поэтому я подумал, что будет проще создать другую таблицу и создать строку для каждого события, включая повторные события.
А вы, ребята, что думаете?
Генетическое программирование в C#
Я искал несколько хороших примеров генетического программирования для C#. кто-нибудь знает о хороших ресурсах онлайн/книг? Интересно, существует ли библиотека C# для эволюционного/генетического программирования?
917   13   02:53, 13th August, 2020
Найдите наилучшую комбинацию из заданного множества множеств
Скажем, у вас есть груз. Он должен пройти от точки А до точки Б, от точки Б до точки C и, наконец, от точки C до точки D. вам нужно добраться туда за пять дней за наименьшую сумму денег. Есть три возможных грузоотправителя для каждой ноги, каждый со своим собственным различным временем и стоимостью для каждой ноги:
Array
(
[leg0] => Array
(
[UPS] => Array
(
[days] => 1
[cost] => 5000
)
[FedEx] => Array
(
[days] => 2
[cost] => 3000
)
[Conway] => Array
(
[days] => 5
[cost] => 1000
)
)
[leg1] => Array
(
[UPS] => Array
(
[days] => 1
[cost] => 3000
)
[FedEx] => Array
(
[days] => 2
[cost] => 3000
)
[Conway] => Array
(
[days] => 3
[cost] => 1000
)
)
[leg2] => Array
(
[UPS] => Array
(
[days] => 1
[cost] => 4000
)
[FedEx] => Array
(
[days] => 1
[cost] => 3000
)
[Conway] => Array
(
[days] => 2
[cost] => 5000
)
)
)
Как вы собираетесь найти лучшую комбинацию программно?
Моя лучшая попытка до сих пор (третий или четвертый алгоритм) :
- Найдите самый длинный грузоотправитель для каждой ноги
- Устранить большинство "expensive" один
- Найти самый дешевый грузоотправитель для каждой ноги
- Рассчитайте общую стоимость & дней
- Если дни приемлемы, закончите, иначе, Гото 1
Быстро высмеивается в PHP (обратите внимание, что тестовый массив ниже работает плавно, но если вы попробуете его с тестовым массивом сверху, он не найдет правильную комбинацию):
$shippers["leg1"] = array(
"UPS" => array("days" => 1, "cost" => 4000),
"Conway" => array("days" => 3, "cost" => 3200),
"FedEx" => array("days" => 8, "cost" => 1000)
);
$shippers["leg2"] = array(
"UPS" => array("days" => 1, "cost" => 3500),
"Conway" => array("days" => 2, "cost" => 2800),
"FedEx" => array("days" => 4, "cost" => 900)
);
$shippers["leg3"] = array(
"UPS" => array("days" => 1, "cost" => 3500),
"Conway" => array("days" => 2, "cost" => 2800),
"FedEx" => array("days" => 4, "cost" => 900)
);
$times = 0;
$totalDays = 9999999;
print "<h1>Shippers to Choose From:</h1><pre>";
print_r($shippers);
print "</pre><br />";
while($totalDays > $maxDays && $times < 500){
$totalDays = 0;
$times++;
$worstShipper = null;
$longestShippers = null;
$cheapestShippers = null;
foreach($shippers as $legName => $leg){
//find longest shipment for each leg (in terms of days)
unset($longestShippers[$legName]);
$longestDays = null;
if(count($leg) > 1){
foreach($leg as $shipperName => $shipper){
if(empty($longestDays) || $shipper["days"] > $longestDays){
$longestShippers[$legName]["days"] = $shipper["days"];
$longestShippers[$legName]["cost"] = $shipper["cost"];
$longestShippers[$legName]["name"] = $shipperName;
$longestDays = $shipper["days"];
}
}
}
}
foreach($longestShippers as $leg => $shipper){
$shipper["totalCost"] = $shipper["days"] * $shipper["cost"];
//print $shipper["totalCost"] . " <?> " . $worstShipper["totalCost"] . ";";
if(empty($worstShipper) || $shipper["totalCost"] > $worstShipper["totalCost"]){
$worstShipper = $shipper;
$worstShipperLeg = $leg;
}
}
//print "worst shipper is: shippers[$worstShipperLeg][{$worstShipper['name']}]" . $shippers[$worstShipperLeg][$worstShipper["name"]]["days"];
unset($shippers[$worstShipperLeg][$worstShipper["name"]]);
print "<h1>Next:</h1><pre>";
print_r($shippers);
print "</pre><br />";
foreach($shippers as $legName => $leg){
//find cheapest shipment for each leg (in terms of cost)
unset($cheapestShippers[$legName]);
$lowestCost = null;
foreach($leg as $shipperName => $shipper){
if(empty($lowestCost) || $shipper["cost"] < $lowestCost){
$cheapestShippers[$legName]["days"] = $shipper["days"];
$cheapestShippers[$legName]["cost"] = $shipper["cost"];
$cheapestShippers[$legName]["name"] = $shipperName;
$lowestCost = $shipper["cost"];
}
}
//recalculate days and see if we are under max days...
$totalDays += $cheapestShippers[$legName]['days'];
}
//print "<h2>totalDays: $totalDays</h2>";
}
print "<h1>Chosen Shippers:</h1><pre>";
print_r($cheapestShippers);
print "</pre>";
Я думаю, что мне, возможно, придется на самом деле сделать что-то вроде того, где я буквально делаю каждую комбинацию по одному (с серией петель) и складываю общее "score" каждого и нахожу лучший....
EDIT: Чтобы уточнить, это не задание "homework" (я не в школе). Это часть моего текущего проекта на работе.
Требования (как всегда) постоянно менялись. Если бы мне дали текущие ограничения в то время, когда я начал работать над этой проблемой, я бы использовал какой-то вариант алгоритма A* (или Dijkstra'S, или shortest path, или simplex, или что-то еще). Но все менялось и менялось, и это привело меня туда, где я сейчас нахожусь.
Поэтому я думаю, что это означает, что мне нужно забыть обо всем дерьме, которое я сделал до этого момента, и просто пойти с тем, что я знаю, что должен идти, что является алгоритмом поиска пути.
Оптимизация алгоритма поиска в C
Может ли производительность этого последовательного алгоритма поиска (взято из Практика программирования) может быть улучшена с помощью любой из собственных утилит C, например, если я установил переменную i в качестве переменной регистра ?
int lookup(char *word, char*array[])
{
int i
for (i = 0; array[i] != NULL; i++)
if (strcmp(word, array[i]) == 0)
return i;
return -1;
}
Алгебраические типы данных Haskell
Я пытаюсь полностью понять все концепции Haskell.
В чем алгебраические типы данных похожи на универсальные типы, например, в C# и Java? И чем же они отличаются? И вообще, что в них такого особенного?
Я знаком с универсальной алгеброй и ее кольцами и полями, но у меня есть только смутное представление о том, как работают типы Haskell.
444   0   23:21, 7th August, 2020
Выбор множителя для функции (string) hash
У вас есть какие-либо советы/правила по выбору множителя для использования в (мультипликативной) функции hash. Функция вычисляет значение hash строки.
Какие инструменты вы используете для разработки приложений C++ на Linux?
Я разрабатываю приложения C++ в среде Linux. Инструменты, которые я использую каждый день, включают Eclipse с плагином CDT, gdb и valgrind.
Какие инструменты используют другие люди? Есть ли что-нибудь для Linux, что соперничает с изяществом Microsoft Visual Studio?
Каков наиболее эффективный способ для плавающего и двойного сравнения?
Каков был бы наиболее эффективный способ сравнить два значения double или два значения float ?
Просто делать это неправильно:
bool CompareDoubles1 (double A, double B)
{
return A == B;
}
Но что-то вроде:
bool CompareDoubles2 (double A, double B)
{
diff = A - B;
return (diff < EPSILON) && (-diff < EPSILON);
}
Похоже на переработку отходов.
Кто-нибудь знает более умный поплавковый компаратор?
Как вы отделяете логику игры от дисплея?
Как можно сделать так, чтобы количество кадров дисплея в секунду не зависело от логики игры? Таким образом, логика игры работает с одинаковой скоростью независимо от того, насколько быстро видеокарта может визуализировать.
Лучший алгоритм переноса слов?
Перенос слов-это одна из обязательных функций современного текстового редактора.
Как можно обрабатывать перенос слов? Каков наилучший алгоритм для переноса слов?
Если текст состоит из нескольких миллионов строк, как я могу сделать перенос слов очень быстро?
Зачем мне нужно это решение? Потому что мои проекты должны рисовать текст с различным уровнем масштабирования и одновременно красивым внешним видом.
Рабочая среда - это Windows мобильных устройств. Максимальная скорость 600 MHz при очень малом объеме памяти.
Как я должен обрабатывать информацию о линии? Предположим, что исходные данные имеют три строки.
THIS IS LINE 1.
THIS IS LINE 2.
THIS IS LINE 3.
После этого текст разрыва будет показан следующим образом:
THIS IS
LINE 1.
THIS IS
LINE 2.
THIS IS
LINE 3.
Должен ли я выделить еще три строки? Или еще какие-нибудь предложения?
Алгоритм для выполнения вычисления RFC в Java
RFC для класса Java-это набор всех методов, которые могут быть вызваны в ответ на сообщение объекту класса или каким-либо методом в классе. RFC = M + R, где M = количество методов в классе. R = общее число других методов, непосредственно вызываемых из M.
Мышление C-это то .класс и J-это то .java файл, из которого нам нужно вычислить RFC.
class J{
a(){}
b(){}
c(){
e1.e();
e1.f();
e1.g();
}
h(){
i.k();
i.j();
}
m(){}
n(){
i.o();
i.p();
i.p();
i.p();
}
}
здесь M=6 и R=9 (Не беспокойтесь о вызове внутри цикла. Это рассматривается как один вызов)
Вычисление M легко. Загрузите C с помощью загрузчика классов и используйте отражение, чтобы получить количество методов.
Вычисление R не является прямым. Нам нужно подсчитать количество вызовов метода из класса. Только первый уровень.
Для вычисления R я должен использовать regex. Обычно формат будет (вызовы без использования . не учитываются)
[variable_name].[method_name]([zero or more parameters]);
или
[variable_name].[method_name]([zero or more parameters])
без точки с запятой, когда возврат вызова напрямую становится параметром для другого метода. или
[variable_name].[method_name]([zero or more parameters]).method2();
это становится двумя вызовами метода
Какие еще шаблоны вызова метода вы можете придумать? Есть ли другой способ, кроме использования RegEx, который может быть использован для вычисления R.
UPDATE:
@McDowell
похоже, что с помощью BCEL я могу упростить весь процесс. Дай мне попробовать.
Как поддерживать рекурсивный инвариант в базе данных MySQL?
У меня есть дерево, закодированное в базе данных MySQL как ребра:
CREATE TABLE items (
num INT,
tot INT,
PRIMARY KEY (num)
);
CREATE TABLE tree (
orig INT,
term INT
FOREIGN KEY (orig,term) REFERENCES items (num,num)
)
Для каждого листа в дереве, items.tot устанавливается кем-то. Для внутренних узлов items.tot должен быть суммой его дочерних элементов. Повторное выполнение следующего запроса приведет к желаемому результату.
UPDATE items SET tot = (
SELECT SUM(b.tot) FROM
tree JOIN items AS b
ON tree.term = b.num
WHERE tree.orig=items.num)
WHERE EXISTS
(SELECT * FROM tree WHERE orig=items.num)
(обратите внимание, что это на самом деле не работает, но это к делу не относится)
Предположим, что база данных существует и инвариант уже удовлетворен.
Вопрос в том:
Каков наиболее практичный способ обновления DB при сохранении этого требования? Обновления могут перемещать узлы вокруг или изменять значение
totна конечных узлах. Можно предположить, что листовые узлы останутся листовыми узлами, внутренние узлы останутся внутренними узлами, и все это останется как правильное дерево.
Некоторые мысли у меня были:
- Полное аннулирование, после любого обновления, пересчитать все (ум... Нет)
- Установите триггер в таблице элементы для обновления родительского элемента любой обновляемой строки
- Это было бы рекурсивно (обновления запускают обновления, запускают обновления,...)
- Не работает, MySQL не может обновить таблицу, которая запустила триггер
- Установите триггер для планирования обновления родительского элемента любой обновляемой строки
- Это было бы итеративно (получить элемент из расписания, обработка его планирует больше элементов)
- Что же это такое? Доверяйте клиентскому коду, чтобы получить его правильно?
- Преимущество заключается в том, что если обновления упорядочены правильно, то меньше сумм должно быть вычислено. Но этот порядок сам по себе является осложнением.
Идеальное решение было бы обобщить на другие "aggregating invariants"
FWIW я знаю, что это "немного за бортом", но я делаю это для удовольствия (Fun: verb, находя невозможное, делая это. :-)
Красно-Черные Деревья
Я видел бинарные деревья и бинарный поиск, упомянутые в нескольких книгах, которые я читал в последнее время, но поскольку я все еще в начале моих исследований в области компьютерных наук, я еще не прошел курс, который действительно имел дело с алгоритмами и структурами данных серьезным образом.
Я проверил все типичные Источники (Википедия, Google), и большинство описаний полезности и реализации (в частности) красно-черных деревьев оказались настолько плотными и трудными для понимания. Я уверен, что для кого-то с необходимым фоном это имеет идеальный смысл, но в данный момент он читается почти как иностранный язык.
Итак, что же делает бинарные деревья полезными в некоторых общих задачах, которые вы делаете во время программирования? Кроме того, какие деревья вы предпочитаете использовать (пожалуйста, включите пример реализации) и почему?
Расчет списка обрезки с наименьшим количеством обрезанных отходов
Я работаю над проектом, где я произвожу алюминиевый экструзионный режущий лист.
Алюминиевые штранг-прессования приходят в длины 5m.
У меня есть список меньших длин, которые нужно вырезать из 5-миллиметровой длины алюминиевых профилей.
Меньшие длины должны быть обрезаны в том порядке,который производит наименьшее количество обрезанных отходов из 5-миллиметровых длин алюминиевых профилей.
В настоящее время я упорядочиваю список сокращений таким образом, что обычно самая длинная из меньших длин отрезается первой, а самая короткая из меньших длин-последней. Исключение из этого правила состоит в том, что когда более короткая длина не подходит к тому, что осталось от 5-метровой длины алюминиевой экструзии, я использую самую длинную короткую длину, которая подойдет.
Это, по-видимому, дает очень эффективный (очень мало отрубных отходов) список сокращений и не занимает много времени для расчета. Однако я полагаю, что даже если список сокращений очень эффективен, он не обязательно является самым эффективным.
Кто-нибудь знает способ рассчитать наиболее эффективный список резки, который может быть рассчитан за разумное время?
EDIT: Спасибо за ответы, я продолжу использовать подход "greedy", поскольку он, похоже, делает очень хорошую работу (из всех человеческих попыток создать эффективный список сокращений) и очень быстр.
Как найти имя столбца Excel, которое соответствует заданному целому числу?
Как бы вы определили имя столбца (например, "AQ" или "BH") n-го столбца в Excel?
Edit: языковой агностический алгоритм для определения этого является здесь главной целью.
Алгоритм нахождения наибольшего простого множителя числа
Каков наилучший подход к вычислению наибольшего простого множителя числа?
Я думаю, что наиболее эффективным будет следующее:
- Найти наименьшее простое число, которое делится чисто
- Проверьте, является ли результат деления простым
- Если нет, найдите следующий самый низкий
- Перейти к 2.
Я основываю это предположение на том, что легче вычислить малые простые множители. Разве это правильно? Какие еще подходы я должен рассмотреть?
Edit: теперь я понял, что мой подход бесполезен, если в игре есть более 2 простых множителей, поскольку Шаг 2 терпит неудачу, когда результат является произведением двух других простых чисел, поэтому необходим рекурсивный алгоритм.
Правка снова: и теперь я понял, что это все еще работает, потому что последнее найденное простое число должно быть самым высоким, поэтому любая дальнейшая проверка не-простого результата из шага 2 приведет к меньшему простому числу.
Факториальные алгоритмы на разных языках
Я хочу увидеть все различные способы, которые вы можете придумать для факторной подпрограммы или программы. Есть надежда, что любой желающий может прийти сюда и посмотреть, не захочет ли он выучить новый язык.
Помыслы:
- Процессуальный
- Функциональная
- Объектно-Ориентированный
- Один лайнер
- Затемненный
- Чудак
- плохой код
- Полиглот
В основном я хочу увидеть пример различных способов написания алгоритма и то, как они будут выглядеть на разных языках.
Пожалуйста, ограничьте его одним примером для каждой записи. Я позволю вам иметь более одного примера на ответ, если вы пытаетесь выделить определенный стиль, язык или просто хорошо продуманную идею, которая подходит для того, чтобы быть в одном посте.
Единственное реальное требование состоит в том, что он должен найти факториал данного аргумента во всех представленных языках.
Будьте Изобретательны!
Рекомендуемых Руководящих Принципов:
# Language Name: Optional Style type
- Optional bullet points
Code Goes Here
Other informational text goes here
Я буду периодически идти вперед и редактировать любой ответ, который не имеет приличного форматирования.
Алгоритм сравнения двух изображений
Учитывая два разных графических файла (в любом формате, который я выберу), мне нужно написать программу, чтобы предсказать вероятность того, что один из них будет нелегальной копией другого. Автор копии может делать такие вещи, как поворот, создание негатива или добавление тривиальных деталей (а также изменение размера изображения).
Знаете ли вы какой-нибудь алгоритм для выполнения такого рода работы?
Каков ваш опыт проверки программных моделей?
- Для каких типов приложений вы использовали проверку моделей ?
- Какой инструмент проверки модели вы использовали?
- Как бы вы суммировали свой опыт w/ этой техники, в частности, в оценке ее эффективности в обеспечении более высокого качества программного обеспечения?
В ходе моих исследований у меня была возможность использовать Spin, и это вызвало мое любопытство относительно того, сколько фактической проверки модели происходит и какую ценность получают организации из нее. В моем опыте работы я работал над бизнес-приложениями, где (естественно)нет никакого рассмотрения применения формальной проверки к логике. Я бы очень хотел узнать о SO людях, которые проверяют опыт и мысли по этому вопросу. Станет ли проверка моделей когда-нибудь более широко используемой развивающейся практикой, которую мы должны иметь в нашем инструментарии?
451   5   10:02, 7th August, 2020
Как я могу измерить сходство между двумя изображениями?
Я хотел бы сравнить скриншот одного приложения (может быть веб-страница) с ранее сделанным скриншотом, чтобы определить, правильно ли приложение отображает себя. Я не хочу точного сравнения соответствия, потому что аспект может быть немного другим (в случае веб-приложения, в зависимости от браузера, какой-то элемент может находиться в немного другом месте). Это должно дать меру того, насколько похожи скриншоты.
Есть ли библиотека / инструмент, который уже делает это? Как бы вы это реализовали?
Ваш любимый алгоритм и урок, который он вам преподал
Какой алгоритм научил вас больше всего о программировании или конкретной языковой функции?
У всех нас были такие моменты, когда мы вдруг знаем, просто знаем, что получили важный урок на будущее, основанный на том, что наконец-то поняли алгоритм, написанный программистом на пару ступеней выше по эволюционной лестнице. Чьи идеи и код оказали на вас магическое воздействие?
Вычислить расстояние между двумя точками широты и долготы? (Формула гаверсинуса )
Как рассчитать расстояние между двумя точками, указанными широтой и долготой?
Для уточнения я хотел бы получить расстояние в километрах; точки используют систему WGS84, и я хотел бы понять относительную точность доступных подходов.
Парсер уравнений (выражений)с приоритетом?
Я разработал анализатор уравнений с использованием простого алгоритма стека, который будет обрабатывать двоичные файлы (+, -, |, &, *, /, etc) операторы, унарные (!) операторы и скобки.
Использование этого метода, однако, оставляет мне все, что имеет одинаковый приоритет - он вычисляется слева направо независимо от оператора, хотя приоритет может быть применен с помощью скобок.
Так что прямо сейчас "1+11*5" возвращает 60, а не 56, как можно было бы ожидать.
Хотя это подходит для текущего проекта, Я хочу иметь рутину общего назначения, которую можно использовать для последующих проектов.
Отредактировано для ясности:
Что такое хороший алгоритм для разбора уравнений с приоритетом?
Я заинтересован в чем-то простом для реализации и понимаю, что я могу кодировать сам, чтобы избежать проблем лицензирования с доступным кодом.
Grammar:
Я не понимаю вопроса grammar - я написал это от руки. Это достаточно просто, чтобы я не видел необходимости в YACC или Bison. Мне просто нужно вычислить строки с такими уравнениями, как "2+3 * (42/13)".
Язык:
Я делаю это в C, но меня интересует алгоритм, а не конкретное языковое решение. C-это достаточно низкий уровень, чтобы его можно было легко перевести на другой язык, если возникнет такая необходимость.
пример кода
Я опубликовал тестовый код для простого синтаксического анализатора выражений , о котором я говорил выше. Требования к проекту изменились, и поэтому мне никогда не нужно было оптимизировать код для производительности или пространства, поскольку он не был включен в проект. Он написан в оригинальной многословной форме и должен быть легко понятен. Если я сделаю что-нибудь еще с ним в плане приоритета операторов, я, вероятно, выберу макрос hack , потому что он соответствует rest программы в простоте. Если я когда-нибудь использую это в реальном проекте, я буду использовать более компактный/быстрый парсер.
Смежный вопрос
-Adam
Наложите полный порядок на все экземпляры класса *any* в Java
Я не уверен, будет ли следующий код обеспечивать все условия, указанные в Javadoc Comparator.
class TotalOrder<T> implements Comparator<T> {
public boolean compare(T o1, T o2) {
if (o1 == o2 || equal(o1, o2)) return 0;
int h1 = System.identityHashCode(o1);
int h2 = System.identityHashCode(o2);
if (h1 != h2) {
return h1 < h2 ? -1 : 1;
}
// equals returned false but identity hash code was same, assume o1 == o2
return 0;
}
boolean equal(Object o1, Object o2) {
return o1 == null ? o2 == null : o1.equals(o2);
}
}
Будет ли приведенный выше код накладывать полный порядок на все экземпляры любого класса, даже если этот класс не реализует сопоставимый?