Společnost Seznam.cz spouští konverzační nástroj založený na umělé inteligenci Seznam Asistent. Asistent využívá vlastní jazykový model SeLLMa a dočasně i komerční modely od OpenAI provozované v evropských datacentrech prostřednictvím Microsoft Azure. Dlouhodobým cílem Seznamu je provozovat Asistenta výhradně na interních jazykových modelech a ve vlastních datových centrech.
Software LibrePods osvobozuje bezdrátová sluchátka AirPods z ekosystému Applu. Exkluzivní funkce AirPods umožňuje využívat na Androidu a Linuxu. Díky zdokumentování proprietárního protokolu AAP (Apple Accessory Protocol).
Byl vydán AlmaLinux OS 10.1 s kódovým názvem Heliotrope Lion. S podporou Btrfs. Podrobnosti v poznámkách k vydání.
Placená služba prohledávání zprostředkovatelů dat a automatického odstraňování uniklých osobních údajů Mozilla Monitor Plus bude 17. prosince ukončena. Bezplatná monitorovací služba Mozilla Monitor bude i nadále poskytovat okamžitá upozornění a podrobné pokyny k omezení rizik úniku dat. Služba Mozilla Monitor Plus byla představena v únoru loňského roku.
Waydroid (Wikipedie, GitHub) byl vydán v nové verzi 1.6.0. Waydroid umožňuje spouštět aplikace pro Android na běžných linuxových distribucích. Běhové prostředí vychází z LineageOS.
Příspěvek na blogu Raspberry Pi představuje novou kompletně přepracovanou verzi 2.0 aplikace Raspberry Pi Imager (YouTube) pro stažení, nakonfigurování a zapsání obrazu operačního systému pro Raspberry Pi na SD kartu. Z novinek lze vypíchnout volitelnou konfiguraci Raspberry Pi Connect.
Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 8.00. Přináší podporu nejnovějších procesorů Intel a AMD nebo také tmavý režim.
Programovací jazyk Racket (Wikipedie), tj. jazyk z rodiny jazyků Lisp a potomek jazyka Scheme, byl vydán v nové major verzi 9.0. Hlavní novinku jsou paralelní vlákna (Parallel Threads).
Před šesti týdny bylo oznámeno, že Qualcomm kupuje Arduino. Minulý týden byly na stránkách Arduina aktualizovány podmínky používání a zásady ochrany osobních údajů. Objevily se obavy, že by otevřená povaha Arduina mohla být ohrožena. Arduino ubezpečuje, že se nic nemění a například omezení reverzního inženýrství v podmínkách používání se týká pouze SaaS cloudové aplikace.
Knihovna libpng, tj. oficiální referenční knihovna grafického formátu PNG (Portable Network Graphics), byla vydána ve verzi 1.6.51. Opraveny jsou 4 bezpečnostní chyby obsaženy ve verzích 1.6.0 (vydána 14. února 2013) až 1.6.50. Nejvážnější z chyb CVE-2025-65018 může vést ke spuštění libovolného kódu.
Řešení dotazu:
Prelude Data.List> [1,2,2,3,3,3,4,4,4,4] \\ [4,4,3,3,2,2,1,1]
[3,4,4]
/thread :)
Tady je Python, styl „prase psalo“. Bylo by to mnohem přehlednější i kratší, kdyby to nemusel být oneliner. 
listsub = lambda first, second: [i for d in ([(d, d.update(((k, 1 + d.get(k, 0)),))) for d in ({},) for k in first][0][0],) for i in second if (d.get(i, 0), d.update(((i, d.get(i, 0) - 1),)))[0] <= 0]
A takhle se to dá vyzkoušet:
listsub([1, 1, 1, 5, 5, 4, 3, 4, 3, 4, 3], [5, 4, 3, 2, 1] * 10) listsub([4, 4, 3, 3, 2, 2, 1, 1], [1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
Kdyby to nebyl oneliner:
def listsub_gen(first, second):
counts = {}
for i in first:
counts.setdefault(i, 0)
counts[i] += 1
for i in second:
if counts.get(i, 0):
counts[i] -= 1
else:
yield i
def listsub(first, second):
return [i for i in listsub_gen(first, second)]
>>> from collections import Counter >>> list((Counter([1,1,3,2,2])-Counter([1,2,2,2])).elements()) [1, 3]
Ano, použít se dá, ale uvedené řešení nesplňuje zadání.
>>> listsub([2], [3, 2, 1]) [3, 1] list((Counter([3, 2, 1]) - Counter([2])).elements()) [1, 3]
Bylo by potřeba procházet seznamem, postupně odebírat prvky z counteru a ty, kterých už je nula, dát do výsledného seznamu.
list(sorted((Counter(a)-Counter(b)).elements(), key=a.index))případně efektivněji
list(sorted((Counter(a)-Counter(b)).elements(), key=dict(zip(a,range(len(a)))).get))
Ehm...return [i for i in listsub_gen(first, second)]
return list(listsub_gen(first, second))
Prelude Data.List> filter (`notElem` [1,2,3]) [1,1,2,2,3,3,3,4,4,4,4]
[4,4,4,4]
perl6 -e 'my $a=(2,2,1,1,1,7).Bag;my $b=(1,2,1,3,1,2,2,1,2,3,1,4).Bag; say ($b (-) $a).kxxv'pokud by si trval, tak třeba:
perl6 -e 'my $a=(2,2,1,1,1,7).BagHash; my @b=(1,2,1,3,1,2,2,1,2,3,1,4); say @b.grep: { !$a{$_}-- }'
perl -le '@pole1=(4,4,3,3,2,2,1);@pole2=(1,2,2,3,3,3,4,4,4,4); $regx=join "\|", @pole1; print grep { not /^$regx$/ && $regx =~ s/\|?$_\|?/|/ } @pole2'
Pro druhý případ stačí provést substituci globálně (g). Nevypadá to asi nic extra, ale lepší než šolichání v cyklech, které mne vedle toho napadlo.
No such method 'kxxv' for invocant of type 'Bag'co má dělat kxxv?
Bag, což je specifický Hash, na pole.
perl6 -e 'my $a=(2,2,1,1,1,7).Bag;my $b=(1,2,1,3,1,2,2,1,2,3,1,4).Bag;
say ($b (-) $a); #bag(4, 3(2), 1(2), 2(2))
say ($b (-) $a).Hash; #{1 => 2, 2 => 2, 3 => 2, 4 => 1}
say ($b (-) $a).kxxv; #(4 3 3 1 1 2 2)
my &my-kxxv = {flat .keys Zxx .values};
say my-kxxv $b (-) $a; #(4 3 3 1 1 2 2)
'
Tiskni
Sdílej: