Vývojáři OpenMW (Wikipedie) oznámili vydání verze 0.50.0 této svobodné implementace enginu pro hru The Elder Scrolls III: Morrowind. Přehled novinek i s náhledy obrazovek v oznámení o vydání.
Komunita kolem Linux Containers po roce vývoje představila (YouTube) neměnný operační systém IncusOS speciálně navržený pro běh Incusu, tj. komunitního forku nástroje pro správu kontejnerů LXD. IncusOS poskytuje atomické aktualizace prostřednictvím mechanismu A/B aktualizací s využitím samostatných oddílů a vynucuje zabezpečení bootování pomocí UEFI Secure Bootu a modulu TPM 2.0. Postaven je na Debianu 13.
Mozilla začne od ledna poskytovat komerční podporu Firefoxu pro firmy. Jedná se o podporu nad rámec stávající podpory, která je k dispozici pro všechny zdarma.
V Bolzanu probíhá konference SFSCON (South Tyrol Free Software Conference). Jean-Baptiste Kempf, zakladatel a prezident VideoLAN a klíčový vývojář VLC media playeru, byl na ní oceněn cenou European SFS Award 2025 udělovanou Free Software Foundation Europe (FSFE) a Linux User Group Bolzano‑Bozen (LUGBZ).
Open-source minimalistický trackball Ploopy Nano byl po modelech modelech Classic a Thumb Trackball také aktualizován. Nová verze Nano 2 používá optický senzor PAW3222 a k původně beztlačítkovému designu přidává jedno tlačítko, které ve výchozí konfiguraci firmwaru QMK přepíná režim posouvání koulí. Sestavený trackball nyní vyjde na 60 kanadských dolarů (bez dopravy a DPH).
Github publikoval Octoverse 2025 (YouTube), tj. každoroční přehled o stavu open source a veřejných softwarových projektů na GitHubu. Každou sekundu se připojil více než jeden nový vývojář. Nejpoužívanějším programovacím jazykem se stal TypeScript.
Kit je nový maskot webového prohlížeče Firefox.
Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.5. Přehled novinek s náhledy v oznámení na blogu.
Německo zvažuje, že zaplatí místním telekomunikačním operátorům včetně Deutsche Telekom, aby nahradili zařízení od čínské firmy Huawei. Náklady na výměnu by mohly přesáhnout dvě miliardy eur (bezmála 49 miliard Kč). Jeden scénář počítá s tím, že vláda na tento záměr použije prostředky určené na obranu či infrastrukturu.
Po dvaceti letech skončil leader japonské SUMO (SUpport.MOzilla.org) komunity Marsf. Důvodem bylo nasazení sumobota, který nedodržuje nastavené postupy a hrubě zasahuje do překladů i archivů. Marsf zároveň zakázal použití svých příspěvků a dat k učení sumobota a AI a požádal o vyřazení svých dat ze všech učebních dat.
Zadání: V internetovém obchode je možno zakoupit zboží v různých baleních za různou cenu. např. bal1 (1ks, 20kč/ks) bal2 (5ks, 18kč/ks) bal3 (10ks, 19kč/ks) bal4 (50ks, 17kč/ks)
Zákazník požaduje např 78ks zboží a program by měl optimální počty balení vložit do košíku, aby to pro zázaníka bylo cenově nejvýhodnější.
Takže v tomto případě 1*bal4, 5*bal2, 3*bal1.
Napadá vás jiné řešení než zkoušet všechny možné kombinace a poté vyhodnotit která je nejvýhodnější.
Díky.Řešení dotazu:
78 / 50 = 1 (28)/ 5 = 5 (3) / 10 = 0 (3) / 1 = 3 (0)
bal1 (1ks, 100kč/ks) bal2 (7ks, 10kč/ks) bal3 (20ks 9kč/ks) a zákazník požaduje 21ks
dle tohoto by vyšlo 1*bal3 + 1*bal1 výsledná cena 280kč
správně by mělo být 3*bal2 výsledná cena 210kč
http://cs.wikipedia.org/wiki/Problém_batohu
K je požadovaný počet kusů. Na vstupu jsou dvojice (počet kusů v balení, cena balení).
Inicializace: Udělám pole arr indexované čísly 1..K, kde i-tý prvek pole
je roven nejnižší ceně za balení s i kusy, pokud takové balení neexistuje, je tam nekonečno.
n-tý krok algoritmu: Prvky 1..n-1 se už nezmění a obsahují optimální cenu za dané počty kusů. Nyní spočítáme optimální cenu za n kusů. M je minimum hodnot arr[i] + arr[n-i] přes všechna i=1..n-1. Nejnižší cena za n kusů je arr[n] <- min(M, arr[n]).
přes všechna i=1..n-1
stačí přes všechna i=1..(n-1 div 2)
jestli se nepletu
class Variation {
var $pieces_arr=array();
var $prices_arr=array();
var $sum_count=0;
var $sum_price=0;
function Variation() {
}
function setPieces($type, $count, $price){
$this->pieces_arr[$type] = $count;
$this->prices_arr[$type] = $count*$price;
$this->sum_count = array_sum($this->pieces_arr);
$this->sum_price = array_sum($this->prices_arr);
}
}
class VariationSolver {
var $itemsArr = array();
var $reqCount = 0;
var $BestVar;
function VariationSolver() {
$this->BestVar = null;
}
function setRequestedCount($count){
$this->reqCount = $count;
}
function addVariationItem($type, $piece, $price){
$this->itemsArr[] = array($type, $piece, $price);
}
function compute($level, $VarObj){
$max_level = sizeof($this->itemsArr)-1;
$increment = $this->itemsArr[$level][1];
for ($i = 0; $i==0 || ($i <= $this->reqCount && ($VarObj->sum_count+$increment)<=$this->reqCount) ; $i=$i+$increment) {
$VarObj->setPieces($this->itemsArr[$level][0], $i, $this->itemsArr[$level][2]);
if ($max_level>$level){
$this->compute($level+1, $VarObj);
}
else {
if ($VarObj->sum_count==$this->reqCount){
if ($this->BestVar == null || $VarObj->sum_price < $this->BestVar->sum_price){
$this->BestVar = $VarObj;
}
}
}
}
}
function getBestVar(){ //slow
$this->BestVar = null;
if (sizeof($this->itemsArr)>0){
$this->compute(0, new Variation());
}
return $this->BestVar;
}
}
//==== Vypocet ====
$VS = new VariationSolver();
$VS->setRequestedCount(100);
$VS->addVariationItem("N",1,100); // typ baleni, pocet kusu v baleni, cena za kus
$VS->addVariationItem("B",2,95); // typ baleni, pocet kusu v baleni, cena za kus
$VS->addVariationItem("A1",5,90); // typ baleni, pocet kusu v baleni, cena za kus
$VS->addVariationItem("D",10,98); // typ baleni, pocet kusu v baleni, cena za kus
$VS->addVariationItem("IC1",20,81); // typ baleni, pocet kusu v baleni, cena za kus
$VS->addVariationItem("IC2",50,80); // typ baleni, pocet kusu v baleni, cena za kus
print_r( $VS->getBestVar() );
Tiskni
Sdílej: