- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
from enum import Enum
from dataclasses import dataclass
class Pathfind:
__init__ = lambda self, maxmoves=9999: exec(f'self.maxmoves={maxmoves}')
def pathfind(self, cells):
i, found, ecords, path = 0, False, (0,0), list()
while(not found):
a = self.getbyval(cells, i)
for n in [j for sub in [self.filterneighbors(self.getneighbors(cells, x[0], x[1])) for x in a] for j in sub]:
cells[n.ccoords[1]][n.ccoords[0]].value = i+1 if cells[n.ccoords[1]][n.ccoords[0]].value>(i+1) else cells[n.ccoords[1]][n.ccoords[0]].value
if cells[n.ccoords[1]][n.ccoords[0]].ctype == CellType.END: found, ecords = True, (n.ccoords[1],n.ccoords[0])
if i<self.maxmoves: i+=1
else: return False
found, cpath = False, ecords
while(not found):
path.append(cpath)
if cpath == self.getbyval(cells, 0)[0]: return path
cell = list(filter(None, ([x if x.value==cells[cpath[0]][cpath[1]].value-1 else None for x in self.filterneighbors(self.getneighbors(cells, cpath[0], cpath[1]))])))[0]
cpath = (cell.ccoords[1],cell.ccoords[0])
listtocells = lambda self, lst: [[Cell(CellType(lst[y][x]), (x,y), 0 if lst[y][x]==2 else self.maxmoves) for x in range(len(lst[y]))] for y in range(len(lst))]
getbyval = lambda self, cells, val: [(x, y) for x in range(len(cells)) for y in range(len(cells[x])) if cells[x][y].value == val]
getneighbors = lambda self, cells, x, y: list(filter(None, [cells[x-1][y] if x>0 else None,cells[x+1][y] if x<len(cells)-1 else None,cells[x][y-1] if y>0 else None,cells[x][y+1] if y<len(cells[x])-1 else None]))
filterneighbors = lambda self, cells: list(filter(lambda cell: False if (cell is None) or cell.ctype==CellType.WALL else True, cells))
class CellType(Enum):
AIR, WALL, START, END = 0, 1, 2, 3
@dataclass
class Cell:
ctype: CellType = CellType.AIR
ccoords: tuple = (0,0)
value: int = 0
Soul_re@ver 12.05.2021 12:42 # +3
Этого автора, судя по всему, бьют кнутом за каждую строчку.
bormand 12.05.2021 12:47 # +2
PolinaAksenova 12.05.2021 12:51 # +2
> __init__ = lambda self, maxmoves=9999: exec(f'self.maxmoves={maxmoves}')
— автор очень старался (^▽^)!
PolinaAksenova 12.05.2021 12:46 # +2
Это казах-Лисп, да? Казах-Лисп?
guest6 12.05.2021 12:47 # +1
3oJIoTou_xyu 12.05.2021 14:59 # 0
guest6 12.05.2021 17:08 # 0
3oJIoTou_xyu 12.05.2021 17:14 # 0
MAKAKA 12.05.2021 17:15 # 0
покажи какой-нить код
3oJIoTou_xyu 12.05.2021 17:18 # 0
Немножко совсем. Скриншот с пылу с жару.
guest6 12.05.2021 17:20 # 0
3oJIoTou_xyu 12.05.2021 17:22 # 0
TOPT 12.05.2021 18:41 # 0
JloJle4Ka 12.05.2021 18:42 # 0
TOPT 12.05.2021 18:43 # 0
JloJle4Ka 12.05.2021 18:46 # 0
TOPT 12.05.2021 18:58 # 0
guest6 12.05.2021 19:01 # 0
MAKAKA 12.05.2021 17:20 # 0
что такое 32?
3oJIoTou_xyu 12.05.2021 17:21 # +1
32 размер картинки, пока не брал просто :getWidth() с картинки.
MAKAKA 12.05.2021 17:23 # +1
3oJIoTou_xyu 12.05.2021 17:27 # +1
MAKAKA 12.05.2021 17:29 # +1
Обычно скриптухи пользуются автоформаттерами, вот я подумал: пользуются ли луашники чем-то типа https://luarocks.org/modules/tammela/luaformatter
3oJIoTou_xyu 12.05.2021 17:33 # 0
И я не хочу этим даже запариваться.
defecatinho 12.05.2021 17:31 # +3
JloJle4Ka 12.05.2021 17:33 # 0
Desktop 12.05.2021 18:38 # +1
bormand 12.05.2021 17:37 # +2
Не всё функциональщина, что с функциями...
MAKAKA 12.05.2021 17:45 # +3
Где lambda , лист компрхжны и filter -- там функциональщина, пусть и хуёвая
CHayT 12.05.2021 17:48 # +2
bormand 12.05.2021 17:54 # +8
Desktop 12.05.2021 18:37 # +1
TOPT 12.05.2021 18:41 # +1
MAKAKA 12.05.2021 20:06 # +1
MAKAKA 12.05.2021 19:59 # 0
ну ладно. Где itertools, генераторы и partial, там уже официально это самое
https://docs.python.org/3/library/functional.html
bootcamp_dropout 12.05.2021 20:15 # 0
Похуй что букв столько же примерно
PolinaAksenova 12.05.2021 20:24 # 0
https://en.cppreference.com/w/cpp/utility/functional/plus
bootcamp_dropout 12.05.2021 20:47 # 0
в с++ <> и {} это как присказка?
PolinaAksenova 12.05.2021 20:49 # 0
MAKAKA 12.05.2021 20:52 # 0
PolinaAksenova 12.05.2021 20:53 # 0
MAKAKA 12.05.2021 20:58 # 0
Soul_re@ver 12.05.2021 21:12 # 0
MAKAKA 12.05.2021 21:15 # 0
PolinaAksenova 12.05.2021 21:16 # 0
MAKAKA 12.05.2021 21:18 # 0
почему это не разрешили??
вдруг бы я хотел в шаблоне написть
T foo{F} ?
Soul_re@ver 12.05.2021 21:20 # +1
guest6 12.05.2021 21:28 # 0
Почему тогда первый скомпилится и обрежеца? Для сососвместимости?
PolinaAksenova 12.05.2021 21:30 # +2
MAKAKA 12.05.2021 20:50 # 0
{} это инициализатор, чтобы вызвать конструктор по умолчанию, иначе оно будет не инициализирвоано (по аналогии с няшной)
так вижу
но я не настоящий крестовик
PolinaAksenova 12.05.2021 20:51 # 0
Иняче оно не скомпилируется, потому что std::plus — это тип.
MAKAKA 12.05.2021 20:53 # +1
я думал про кейс типа
Foo bar; //тут bar может и не инициализироваться, если это сишная структура, да?