-
X-Received: by 2002:ac8:25b1:: with SMTP id e46mr2069724qte.36.1565081704145; Tue, 06
Aug 2019 01:55:04 -0700 (PDT)
X-Received: by 2002:ac8:25b1:: with SMTP id e46mr2069724qte.36.1565081704145; Tue, 06
Aug 2019 01:55:04 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.tel
efonica.de!telefonica.de!weretis.net!feeder7.news.weretis.net!news.mixmin.net!p
roxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!b26no5870406qtq.0!news-o
ut.google.com!a5ni1344qtd.0!nntp.google.com!b26no5870398qtq.0!postnews.google.c
om!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 6 Aug 2019 01:55:03 -0700 (PDT)
In-Reply-To: <e...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=194.9.245.29;
posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
NNTP-Posting-Host: 194.9.245.29
References: <e...@g...com>
<1...@g...com>
<c...@g...com>
<0...@g...com>
<b...@g...com>
<d...@g...com>
<2...@g...com>
<c...@g...com>
<b...@g...com>
<1...@g...com>
<a...@g...com>
<e...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <c...@g...com>
Subject: Re: "Najbardziej imponujący kod, jaki widziałem"
From: Maciej Sobczak <s...@g...com>
Injection-Date: Tue, 06 Aug 2019 08:55:04 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:213755
[ ukryj nagłówki ]> > Prosta sprawa - zmodyfikuj rozwiązanie w Mathematice tak, żeby koszt zamiany
elementu wynosił 2 a nie 1.
>
> Pytanie jest fair i odpowiedź (również fair) jest taka: sam sobie policz.
OK, żeby nie było, że jestem nieuprzejmy, i dla własnej zabawy, zrobiłem mały
research w tej sprawie.
Jest taka fajna funkcja:
https://reference.wolfram.com/language/ref/SequenceA
lignment.html
Ta funkcja rozpisuje różnice między sekwencjami, z czego można wyciągnąć poszczególne
operacje (usunięcie, wstawienie, zamiana). Jeżeli dobrze zrozumiałem ćwiczenie, to
rozwiązeniem może być takie coś:
myDistance[s1_, s2_] := Total[
Min[#] + Max[#] & /@
Cases[SequenceAlignment[s1, s2], a_List :> StringLength /@ a]
]
Pozwoliłem sobie użyć skróconych (idiomatycznych) zapisów na podstawowe operacje
mapowania i lambdy - skoro w innych językach są śmieszne znaczki, to ja też
skorzystam.
Wyrażenie Min+Max załatwia podwójne zliczenie zamian w porównaniu do
wstawień/usunięć. Pełne wyrażenie dla dowolnych wag to:
replacementCost*Min[#] + deletionCost*(Max[#] - Min[#])
gdzie # to anonimowa para {del, ins}, gdzie del to ilość znaków do usunięcia a ins to
ilość znaków do wstawienia; jeśli obie są niezerowe, to znaczy, że jest zastąpienie,
więc np. para {3,5} oznacza, że są 3 znaki do zastąpienia i 2 do
usunięcia/wstawienia. Wszystkie takie wartości są sumowane.
Czy to jest prawidłowy sposób liczenia - nie wiem, ale tak to zrozumiałem.
Czyli nadal nie wyszło jakoś dramatycznie dużo tego kodu, prawda?
Nadal jednak szukałbym gotowych implementacji tutaj (choćby po to, żeby skorzystać z
optymalizacji, które ktoś zrobił za mnie):
https://reference.wolfram.com/language/guide/Distanc
eAndSimilarityMeasures.html
I właśnie na tym polega użyteczność tego produktu.
--
Maciej Sobczak * http://www.inspirel.com
Następne wpisy z tego wątku
- 06.08.19 15:31 Borneq
- 06.08.19 15:45 g...@g...com
- 06.08.19 16:32 Borneq
- 06.08.19 16:39 g...@g...com
- 06.08.19 16:57 Borneq
- 06.08.19 17:01 Borneq
- 06.08.19 17:20 g...@g...com
- 06.08.19 22:57 g...@g...com
- 07.08.19 09:39 Maciej Sobczak
- 07.08.19 10:09 Maciej Sobczak
- 07.08.19 11:10 g...@g...com
- 07.08.19 14:02 Maciej Sobczak
- 07.08.19 16:43 g...@g...com
- 07.08.19 22:32 Maciej Sobczak
- 08.08.19 00:44 AK
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-03-05 Zielona GĂłra => Konsultant wdroĹźeniowy Comarch XL/Optima (KsiÄgowoĹ
- 2025-03-05 Białystok => Spedytor Międzynarodowy (handel ładunkami/prowadzenie
- 2025-03-05 Warszawa => Specjalista ds. Sprzedaży (transport drogowy) <=
- 2025-03-05 Środa Wielkopolska => Konsultant wewnętrzny SAP FI/CO <=
- 2025-03-05 Zielona Góra => Senior Field Sales (system ERP) <=
- 2025-03-05 Warszawa => Data Engineer (Tech Lead) <=
- 2025-03-05 Kraków => Business Development Manager - Network and Network Security
- 2025-03-05 Zaniepokojeni mieszkańcy
- 2025-03-05 Ile pieniędzy ma bank?
- 2025-03-05 Ostrów Świętokrzy => Node.js / Fullstack Developer <=
- 2025-03-05 Białystok => Architekt rozwiązań (doświadczenie w obszarze Java, A
- 2025-03-05 Warszawa => Frontend Developer (Angular13+) <=
- 2025-03-05 Warszawa => Frontend Developer (obszar Angular13+) <=
- 2025-03-05 Chiny-Kraków => Backend Developer (Node + Java) <=
- 2025-03-05 Warszawa => JavaScript / Node / Fullstack Developer <=