Найти - Пользователи
Полная версия: Разбор функции map
Начало » Python для новичков » Разбор функции map
1 2 3
first-step
PEHDOM
м-м-м честно весь мозг себе сломал но никак не могу понять что собственно надо, что означает “положение циферок соответствует порядку всех элементом первого массива”
вот в этом примере совсем непонятно почему 9-ка на первом месте, единица на втором и тд..
Не морочьтесь уж прям)
Положение значит следующее: например 7 3 5 4 - тут семь впереди тройки, тройка впереди пятерки, пятерка впереди четверки. Так же точно они должны быть в длинном варианте. Т.е. например 1 2 7 6 3 8 5 9 4. Положение остальных циферок не волнует.
first-step
PEHDOM
это какоето тестовое задание? нельзя использовать условные операторы и циклы или еще чтото?
Да, надо сделать в “функциональном” стиле. Т.е. есть input, lambda, itertools, map, list, len, int, next, print, str, filter, split, index и т.п. Нельзя if while for и переменные нельзя создавать. Все доллжно решаться в одно действие.
Vladimirv
first-step
С помощью фильтров и техэтажных map я это сделал. Просто хочу с минимальными List это сделать.
А сколько у вас list? И то что, трехэтажные map так это нормально, ну для так поставленной задачи. И что вам мешает скопипастить полноценное описание задачи? Я так и не понял, входные данные есть или их нужно создавать(вводить)?
Тоже сделал без if for while, а map у меня 1, но зато полно filter)
PEHDOM
first-step
Да, надо сделать в “функциональном” стиле. Т.е. есть input, lambda, itertools, map, list, len, int, next, print, str, filter, split, index и т.п. Нельзя if while for и переменные нельзя создавать. Все доллжно решаться в одно действие.
Ну в принципе для вырожденной задачи с такими ограничениями, многоэтажные выражения вполне нормально.В таком случае найти простое и лаконичное решение может быть невозвожно от слова совсем…
Rodegast
> Да, надо сделать в “функциональном” стиле. …. переменные нельзя создавать.

ФП это без изменяемого состояния, а не без имён. По этому ты можешь присвоить значение твоего map-а переменной, но использовать её как константу т.е. не менять её значение.

> это какоето тестовое задание? нельзя использовать условные операторы и циклы или еще чтото?

Я таких экзаменаторов очень быстро посылаю по известному адресу, ибо нефиг.
first-step
Вот условия задачи:
Перед началом тараканьих бегов всем болельщикам было предложено сделать по две ставки на результаты бегов. Каждая ставка имеет вид “Таракан №A придет раньше, чем таракан №B”. Организаторы бегов решили выяснить, могут ли тараканы прийти в таком порядке, чтобы у каждого болельщика сыграла ровно одна ставка из двух (то есть чтобы ровно одно из двух утверждений каждого болельщика оказалось верным). Считается, что никакие два таракана не могут прийти к финишу одновременно.

Формат ввода

В первой строке входных данных содержатся два разделенных пробелом натуральных числа: число K, не превосходящее 10, - количество тараканов и число N, не превосходящее 100, - количество болельщиков. Все тараканы пронумерованы числами от 1 до K. Каждая из следующих N строк содержит 4 натуральных числа A, B, C, D, не превосходящих K, разделенных пробелами. Они соответствуют ставкам болельщика “Таракан №A придет раньше, чем таракан №B” и “Таракан №C придет раньше, чем таракан №D”.

Формат вывода

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


Тест 1
Входные данные:
3 2
2 1 2 3
1 2 3 2

Вывод программы:
3 2 1



Тест 2
Входные данные:
3 4
1 2 1 3
1 2 3 1
1 2 2 3
1 2 3 2

Вывод программы:
0
first-step
Vladimirv
А сколько у вас list? И то что, трехэтажные map так это нормально, ну для так поставленной задачи. И что вам мешает скопипастить полноценное описание задачи? Я так и не понял, входные данные есть или их нужно создавать(вводить)?
Тоже сделал без if for while, а map у меня 1, но зато полно filter)

Сейчас уже избавился от list вообще) Максимум два раза вызывется tuple
first-step
PEHDOM
Ну в принципе для вырожденной задачи с такими ограничениями, многоэтажные выражения вполне нормально.В таком случае найти простое и лаконичное решение может быть невозвожно от слова совсем…

Ну вот, зараза, не пропускает робот… 94/100 пишет. Затяжка выполнения 18-го теста. Я уже и так и так оптимизировал пограмму. Все равно что то не нравится.
PEHDOM
first-step
94/100 пишет. Затяжка выполнения 18-го теста. Я уже и так и так оптимизировал пограмму. Все равно что то не нравится.
ну покажите что вы там наоптимизировали, может кто чтто дельное подскажет..
first-step
Сейчас уже избавился от list вообще)
а вот это ИМХО зря, пайтон со списками работает очень быстро, зачастую работать со списком быстрее чем без него.
first-step
PEHDOM
ну покажите что вы там наоптимизировали, может кто чтто дельное подскажет..

Ну ту голову сломать можно :-)

 import itertools
import functools
print(*(tuple([[[0]]]) + tuple(*map(lambda data: filter(lambda x: tuple(x[0]) == x[1], map(lambda var: (filter(lambda sta: ((var.index(sta[0]) >= var.index(sta[1])) ^ (var.index(sta[2]) >= var.index(sta[3]))), data[1]), data[1], var + data[2]), data[0])), map(lambda x: (itertools.permutations(set(functools.reduce(lambda x,y: x + y ,x[1]))), x[1], tuple(set(range(1, x[0] + 1)) - set(functools.reduce(lambda x,y: x + y ,x[1])))), map(lambda vvod: (next(vvod), tuple(set(map(lambda y: tuple(y), map(lambda x: map(int, input().split()), range(next(vvod))))))), [map(int, input().split())])))))[-1][-1])
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB