Wpis z mikrobloga

@nad__czlowiek: Ale nie ma sensu robić od razu wszystkich substringów. Najpierw bym zrobił substringi o długości 1. I jak wśród nich każdy jest powtarzalny, to dopiero bym sprawdzał substringi 2, itp. Wtedy odpada sortowanie


@cebulowy_krezus: i jakbyś to zrobił iterując jeden raz? Bo to co sugerujesz to pierwsza iteracja wyłapanie substringów length == 1-> sprawdzenie
jeśli nie ma to wyłapanie substringów length == 2 sprawdzenie
jeśli nie ma to wyłapanie
@nad__czlowiek: Jeśli chodzi o 1sze zadanie. To tak, rozwiązanie też leci w O(n^2). Ja bym po prostu nie tworzył wszystkich możliwych substringów z góry.

Mam jeszcze jeden pomysł na to zadanie, żeby lecieć od najdłuższych stringów do najkrótszych. Czyli na początku mamy cały wyraz: "baaaab"
W pierwszym kroku sprawdzasz całość i jest unikalny (wiadomka).
W drugim kroku robisz jego 2 substringi, tj: "baaaa" i "aaaab". Oba są unikalne i schodzisz do
W zasadzie można zacząć od sprawdzenia czy zaczyna i kończy w (0,0) a potem czy liczba "<<<" jest równa ">>>" oraz "^^^^^" rowne "vvvvv", podział stringa na 4 substringi i policzenie czy mamy a = c i b = d


@nad__czlowiek: A jakby zrobił cos takiego?

^^>>vvvv<<^^

No to wtedy Twój kod by zrobił brzydką kupcię ( ͡° ͜ʖ ͡°)
O(n * logn)


@cebulowy_krezus: no do n log n troche brakuje bo "cech00je" (nie można napisać normalnie, brawo wykop cenzura API xD) się tym, że każdy kolejny podzbiór dzielisz na dwa podzbiory

w tym przypadku musiałbyś dzielić po połowie każdy substring czyli abaaba dzielisz na aba i aba potem aba na ab i a i kolejny ciąg aba na ab i a ale jak widzisz prawidłowe rozwiązanie aa jest w ten
to o czym piszesz to abaaba dzielić na abaab oraz baaba itd to jest dzielenie o jeden w dól czyli to dalej da jakieś powiedzmy n * 1/2 n czyli 1/2 n^2 ale wiadomo że w liczeniu złożoności pomija się współczynnik stąd n^2

@nad__czlowiek: dzięki za wyjaśnienie. Racja, będzie O(n^2). A z rozwiązaniem dałem dupy, bo tak jak pisałeś pominę niektóre przypadki
@cebulowy_krezus:

^^>>vvvv<<^^


No to wtedy Twój kod by zrobił brzydką kupcię ( ͡° ͜ʖ ͡°)


@cebulowy_krezus:
żeby był prostokąt to suma ^ musi być równa sumie v
oraz
suma < musi być równa sumie >
oraz
start musi być (0,0) i koniec (0,0)
oraz
możliwe jest to wykonanie tylko 4 ruchów (pierwsza linia ruchu to od razu cały bok) lub 5 ruchów (pierwszy bok w pierwszym
W zasadzie można zacząć od sprawdzenia czy zaczyna i kończy w (0,0) a potem czy liczba "<<<" jest równa ">>>" oraz "^^^^^" rowne "vvvvv", podział stringa na 4 substringi i policzenie czy mamy a = c i b = d


@nad__czlowiek: Raczej tak, gdyż w założeniu zadania jest informacja, że nie można odwiedzić dwa razy tego samego punktu poza punktem początkowym (0,0). Moim zdaniem trzeba tylko sprawdzić czy długość boków dla
@Pharos: jeżeli punkt startowy to (0,0) to róg prostokąta to wtedy tworzymy w każdym ruchu ze 4 ruchów - 4 boki i przechodzimy przez (0,0) dwa razy i każdy punkt jeden raz

ale też jak @cebulowy_krezus zauważył punkt startowy (0,0) może być w jednym z boków wtedy trzeba wykonac 5 ruchów (pierwszy i ostatni ruch utworzy ten jeden bok sumując te dwa ruchy, a pozostałe 3 ruchy utworzą 3 boki od
@nad__czlowiek: Si:

def solution(movies):
x, y = 0, 0
moves = {'^': (0, 1), 'v': (0, -1), '>': (1, 0), '<': (-1, 0)}
horizontal, vertical = 0, 0
for move in movies:
dx, dy = moves[move]

horizontal = horizontal + dx
vertical = vertical + dy
x = x + dx
y = y + dy

if (x, y) != (0, 0):
return False

return horizontal == 0 and vertical ==
@Pharos: a gdzie sprawdzasz cofanie? musi być jeszcze warunek że '<' oraz '>' zmienia się na '^' lub 'v' i odwrotnie
np '^^vv<<>>> pójdzie 0,0 -> 2,0 -> 0,0 -> 0,2 -> 0,0 ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)

no i co w przypadku takim: '^^>>vv<<<<vv>>^^'? (dwa kwadraty, suma boków się zgadza, punkt (0,0)
nad__czlowiek - @Pharos: a gdzie sprawdzasz cofanie? musi być jeszcze warunek że '<' ...

źródło: abcd

Pobierz
a gdzie sprawdzasz cofanie? musi być jeszcze warunek że '<' oraz '>' zmienia się na '^' lub 'v' i odwrotnie

np '^^vv<<>>> pójdzie 0,0 -> 2,0 -> 0,0 -> 0,2 -> 0,0 ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)


@nad__czlowiek: To zdaje się jest wspierane.

no i co w przypadku takim: '^^>>vv<<<<vv>>^^'? (dwa kwadraty, suma
@mleczko-kokosowe no i to jest problem, że cały dzień w crudzie powoduje że nie mam czasu siedzieć nad takimi zadaniami po pracy i żeby dostać pracę w innym crudzie muszę rozwiązać na teście rekrutacyjnym... takie zadanie... Coś w stylu dekadenckiego kółka zatracenie czyli nie mam pracy bo nie mam doświadczenia bo nie mam pracy