Wpis z mikrobloga

We wpisie @asdasty pojawiło się przykładowe pytanie z rozmowy rekrutacyjnej z front-endowcem.

-Determine if a given string is a palindrome.


Proste, prawda?

No to chętnie poprosiłbym funkcję w JavaScript, która sprawdza, czy zadany string jest palindromem (8pkt.). Wytłumaczenie, dlaczego nie jest to trywialne, wraz z podaniem przykładowego kłopotliwego stringa, jest za 2 pkt.

#zagadkiprogramistyczne #javascript

Ranking:

- Marmite, 1pkt.
  • 34
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Ginden: Nie jestem dzisiaj w nastroju do myślenia, pije sobie piwko i odpoczywam :) Ale mnie zainteresowałeś, więc możesz mnie zawołać jak będzie rozwiązanie. Ogólnie to można jeszcze sprawdzać znak po znaku od końca i początku do wewnątrz, ale coś czuję, że to i tak nie o to Ci chodzi.
  • Odpowiedz
Ogólnie to można jeszcze sprawdzać znak po znaku od końca i początku do wewnątrz, ale coś czuję, że to i tak nie o to Ci chodzi.


@kasper93: Ciepło.

Dla pewnych stringów
  • Odpowiedz
@Ginden: Hmm, rozwiązywałem to zadanie w pewnym procesie rekrutacyjnym. Był to test online i miałem 15 minut na rozwiązanie. Więc było raczej mało czasu na szukanie rozwiązań, ale znalazłem wtedy szybko ogólny algorytm, który przeniosłem do JS (sam wtedy tego nie wydumałem :P)

Rozwiązanie:
  • Odpowiedz
@mk4s: A teraz uwaga - to... Nie zadziała. Nadal istnieją stringi, dla których taka funkcja zwróci

false
, mimo że palindromami są (w drugą stronę chyba się nie da).
  • Odpowiedz
@Ginden: To cholera chyba tylko jak jeden znak nie będzie faktycznie jednym znakiem, jakieś ascii code ;p Ale strzelam na ślepo.

@mk4s: A to jest sprytne i pewnie szybsze, ale odwracanie i porównanie teoretycznie powinno dawać takie same efekty. Ginden ma jakiś sprytny haczyk ;p
  • Odpowiedz
@Ginden: nie wiem na jakim palindromie sprawdzałeś ale ja sprawdziłem nawet 가련하시다 사장집 아들딸들아 집장사 다시 하련가 ;-) i zwraca prawidłowy wynik. Oczywiście są przypadki palindromów, które zapisuje się inaczej a czyta się inaczej (np. Japońskich) lub palindromów, które używają wyrazów zamiast liter jako jednostki porównania ale nie widzę tu nic specyficznego dla JavaScriptu
  • Odpowiedz