Zemřel průkopník videoherní hudby Bobby Prince (Wikipedie). Složil hudbu pro hry Wolfenstein 3D, Doom, Doom II, Duke Nukem II a Duke Nukem 3D.
Počítačová hra Operace Flashpoint (Arma: Cold War Assault) od společnosti Bohemia Interactive slaví 25 let. Při této příležitosti bylo publikováno bezplatné hratelné Arma: Cold War Assault Remastered Demo a na GitHubu byly zveřejněny zdrojové kódy.
Na trh v České republice přichází HP EliteBoard G1a. Jde o plnohodnotný AI počítač integrovaný přímo do těla klávesnice, tedy zařízení, které na první pohled vypadá jako minimalistická klávesnice, ale ve skutečnosti nahrazuje klasickou počítačovou jednotku.
V lednu bylo oznámeno, že desktopové prostředí Xfce bude mít vlastní kompozitor pro Wayland s názvem xfwl4. O víkendu byla vydána první preview verze.
Minulý týden byl oficiálně vydán Android 17. Detaily na blogu a stránkách věnovaných vývojářům.
Dnes jde do prodeje zařízení Steam Machine. Steam Machine 512 GB za 1 039 EUR a Steam Machine 2 TB za 1 359 EUR. Do čtvrtka 25. června do 19:00 se lze zapsat na seznamy. Ty budou jednorázově náhodně slosovány, čímž bude určeno pořadí rezervací a čekacích listin.
Vývojáři OpenMW (Wikipedie) oznámili vydání verze 0.51.0 této svobodné implementace enginu pro hru The Elder Scrolls III: Morrowind. Přehled novinek v oznámení o vydání a také na YouTube a PeerTube.
Byla vydána nová verze 2026.3.0 "Carousels & Killer Whales" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu.
Tento týden (24. a 27. června) vyprší platnost Microsoft certifikátu v UEFI vydaných v roce 2011. Nové certifikáty byly vydány v roce 2023. Kdo na počítačích, i virtuálních, používá zabezpečené spouštění (Secure Boot), měl by si ověřit, že má certifikáty aktualizovány, viz např. články na Red Hat nebo Fedora. Pro stávající systémy se nic nemění. Nadále se budou normálně spouštět. Zavaděče podepsané pouze klíčem z 2023 se ale na počítačích s pouze certifikátem 2011 nespustí. Ve Fedoře je zavaděč shim ve verzi 16.1-6 podepsán klíči 2011 i 2023.
Uživatelé mobilních telefonů s Linuxem si nyní mohou nainstalovat aplikaci Mobilní Datovka. Díky tomu je přístup k datovým schránkám dostupný i na zařízeních s mobilními linuxovými distribucemi, jako jsou například Mobian, NixOS Mobile, pmOS atd. Aplikace je dostupná na Flathubu.
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: