Cambalache, tj. RAD (rapid application development) nástroj pro GTK 4 a GTK 3, dospěl po pěti letech vývoje do verze 1.0. Instalovat jej lze i z Flathubu.
KiCad (Wikipedie), sada svobodných softwarových nástrojů pro počítačový návrh elektronických zařízení (EDA), byl vydán v nové major verzi 10.0.0 (𝕏). Přehled novinek v příspěvku na blogu.
Letošní Turingovou cenu (2025 ACM A.M. Turing Award, Nobelova cena informatiky) získali Charles H. Bennett a Gilles Brassard za základní přínosy do oboru kvantové informatiky, které převrátily pojetí bezpečné neprolomitelné komunikace a výpočetní techniky. Jejich protokol BB84 z roku 1984 umožnil fyzikálně zaručený bezpečný přenos šifrovacích klíčů, zatímco jejich práce o kvantové teleportaci položila teoretické základy pro budoucí kvantový internet. Jejich práce spojila fyziku s informatikou a ovlivnila celou generaci vědců.
Firefox 149 dostupný od 24. března přinese bezplatnou vestavěnou VPN s 50 GB přenesených dat měsíčně (s CZ a SK se zatím nepočítá) a zobrazení dvou webových stránek vedle sebe v jednom panelu (split view). Firefox Labs 149 umožní přidat poznámky k panelům (tab notes, videoukázka).
Byla vydána nová stabilní verze 7.9 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 146. Přehled novinek i s náhledy v příspěvku na blogu.
Dle plánu byla vydána Opera GX pro Linux. Ke stažení je .deb i .rpm. V plánu je flatpak. Opera GX je webový prohlížeč zaměřený na hráče počítačových her.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.27.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
Byly publikovány informace (technické detaily) o bezpečnostním problému Snapu. Jedná se o CVE-2026-3888. Neprivilegovaný lokální uživatel může s využitím snap-confine a systemd-tmpfiles získat práva roota.
Nightingale je open-source karaoke aplikace, která z jakékoliv písničky lokálního alba (včetně videí) dokáže oddělit vokály, získat text a vše přehrát se synchronizací na úrovni jednotlivých slov a hodnocením intonace. Pro separaci vokálů využívá UVR Karaoke model s Demucs od Mety, texty písní stahuje z lrclib.net (LRCLIB), případně extrahuje pomocí whisperX, který rovněž využívá k načasování slov. V případě audiosouborů aplikace na
… více »Po půl roce vývoje od vydání verze 49 bylo vydáno GNOME 50 s kódovým názvem Tokyo (Mastodon). Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Řešení dotazu:
Návrh, mohlo by to fungovat... 
Převedl bych intervaly na 2 jakési "události" typu začátek(B) a konec(E). Ještě je třeba mít referenci na samotný interval.
Vše naskládat do pole a setřídit, takže z toho vyjde něco takového: (pro správnost třeba třídit i podle např ID události, zde je to abeceda A—E)
Vytvořit prázdný zásobník (nějaké pole)
Při iteraci každá událost začátek(B:) v poli způsobí uložení na zásobník. Pokud byl zásobník neprázdný, existuje zde průnik.
Kažká událost konec(E:) v poli způsoví odstranění prvku ze zásobníku; všechny intervaly na zásobníku se před vyzvednutím překrývají
Doufám, že je to alespoň trochu k pochopení
Důležité je pochopit že i když je to jeden interval jsou to v podstatě dvě skalární tříditelné hodnoty...
#!/bin/bash
A=(1000 1500)
B=(1200 1700)
C=(1600 2000)
for x in A B C; do
for y in A B C; do
xmin=${!x}
xmax=$(eval echo '$'{$x[1]})
ymin=${!y}
ymax=$(eval echo '$'{$y[1]})
if [[ $ymin -gt $xmin && $ymin -lt $xmax ]]; then
if [[ $imax -gt $ymax ]]; then
echo "$x$y $ymin $ymax"
else
echo "$x$y $ymin $xmax"
fi
fi
done
done
Výstup:
AB 1200 1500 BC 1600 1700
<?php $A=array(1000,1500); $B=array(1200,1700); $B=array(1600,2000); $AB=array(max($A[0],$B[0]),min($A[1],$B[1])); $BC=array(max($B[0],$C[0]),min($B[1],$C[1])); ?>
$classes = array(
array(
'name' => 'A',
'day' => 'Monday',
'start'=> '08:00AM',
'end' => '11:00AM',
),
array(
'name' => 'B',
'day' => 'Monday',
'start'=> '10:00AM',
'end' => '11:30AM',
),
array(
'name' => 'C',
'day' => 'Monday',
'start'=> '12:00PM',
'end' => '04:00PM',
),
array(
'name' => 'D',
'day' => 'Monday',
'start'=> '03:00PM',
'end' => '06:00PM',
),
array(
'name' => 'E',
'day' => 'Monday',
'start'=> '10:00AM',
'end' => '10:30AM',
),
array(
'name' => 'F',
'day' => 'Monday',
'start'=> '11:00AM',
'end' => '11:30AM',
),
);
$overlap = array();
foreach ($classes as $class1) {
foreach ($classes as $class2) {
if ($class1['day'] != $class2['day'] || $class1 == $class2) continue;
if (strtotime($class1['start']) < strtotime($class2['end']) &&
strtotime($class1['start']) >= strtotime($class2['start']))
{
$array = array($class1['name'], $class2['name']);
sort($array);
if (!in_array($array, $overlap)) $overlap[] = $array;
}
}
}
print_r($overlap);
to mi dá výsledok:
Array
(
[0] => Array
(
[0] => A
[1] => B
)
[1] => Array
(
[0] => B
[1] => E
)
[2] => Array
(
[0] => C
[1] => D
)
[3] => Array
(
[0] => A
[1] => E
)
[4] => Array
(
[0] => B
[1] => F
)
)
teraz by stacilo nejako vyselektovať kombinácie, kde sa vyskytuje na začiatku A, t.j. AB,AE a zároveň pole s BE (druhé hodnoty poľa so začiatočným A), takže dostanem výsledok ABE. nejaký nápad na toto? potom následne nájdem spoločný min max prienik ABE a malo by to byť hotové.
SELECT * FROM rozsah;id|name|mi|ma 1|A|1000|1500 2|B|1200|1700 3|C|1600|2000 4|D|2500|3000SELECT n,pmi,pma,pma-pmi AS pm FROM (SELECT r1.name||r2.name AS n, max(r1.mi,r2.mi) AS pmi, min(r1.ma,r2.ma) AS pma FROM rozsah AS r1, rozsah AS r2 WHERE r1.id<r2.id AND pmi<=pma) ORDER BY pm DESC;n|pmi|pma|pm AB|1200|1500|300 BC|1600|1700|100
Tiskni
Sdílej: