1
У меня есть список кортежей, как это:Как сравнить два кортежа в списке?
[(0.0,0.0),(1.0,0.0),(2.0,0.0),(3.0,0.0),(3.0,0.0),(3.0,0.0),(4.0,0.0),(4.0,0.0)]
где первым элементом является X-координата и второй Y-координату, и теперь я хочу, чтобы написать функцию, которая будет возвращать:
[(0.0,0.0),(1.0,0.0),(2.0,0.0),(3.0,0.0),(3.0,1.0),(3.0,2.0),(4.0,0.0),(4.0,1.0)]
Это берет первый элемент из первого кортежа и сначала из второго кортежа, а если он не равен, то Y не изменяется, но если они равны, мы добавляем один в Y.
если у кого-то есть идея, как писать в Haskell?
Похоже, вы могли бы извлечь выгоду из функций, таких как 'groupBy' и со в' Data.List'. Взгляните на этот модуль, чтобы узнать, есть ли что-нибудь, что дает вам представление о том, как это решить. – bheklilr
Я думал о лямбда и карте, но я понятия не имею, как совместить его с проверкой кортежей в списке – aabbcc
Попробуйте написать небольшие функции, которые обрабатывают каждую часть вашего алгоритма. Например, напишите функцию, которая берет два кортежа и увеличивает второй элемент тогда и только тогда, когда первый элемент тот же. – pdexter