Algoritmi

Să construim o mașină virtuală?

Am observat că, în majoritatea cercurilor de dezvoltare amatori, compilatoarele și compilatoarele sunt înconjurate de un mic tip de mistică. Cred că, din cauza complexității lor, a „opacității” lor imaginate în ei. Dintre limbi, asamblarea este în mod similar prea mistificată.

care primit

Am crezut că pot rezolva această situație introducând pas cu pas un procesor simplu cu un set de instrucțiuni simplu, fin redus [VCPU] structură. În plus, de la pașii de proiectare până la implementare, precum și unul, VCPU-apartenența la este foarte simplu asamblator, de asemenea, de la proiectarea sa la implementarea sa, în câțiva pași.

VCPU în sine este foarte simplu (aproximativ 300 de linii de cod), ar putea executa doar zece instrucțiuni. Stăpânirea acestora cred că nu pune nicio dificultate specială pentru cei care sunt interesați de astfel de lucruri. Întreaga „virtualizare” ar fi de fapt puțin mai mult decât o declarație CASE. Asamblorul este, de asemenea, extrem de simplificat, deși ar fi un pic mai complex decât VCPU, dar este, de asemenea, de-abia 3-400 de linii de cod, 10-12 funcții care ar arăta fazele prin care trece intrarea, sursa, până în cele din urmă poate fi rulat în binar.

Dacă sunteți interesat, voi fi fericit să scriu garnitura, textul explicativ și să-l public împreună cu sursa, deoarece VCPU în sine și ansamblul său sunt gata de ani de zile.

Pentru cei care înțeleg:
VCPU este un registru de lucru (acesta este ACCU și are o lățime de doar 8 biți).
Memoria asociată cu VCPU este de până la 256 de octeți. Metoda sa de adresare este liniară.
Operații de instrucțiuni aritmetice: conținutul ACCU și o adresă de memorie. Rezultatul este întotdeauna stocat în ACCU.
VCPU (în limitele sale (dimensiunea memoriei)) este completă.
Utilizare: VCPU citește „binarul” asamblat în memorie și apoi pune controlul la o anumită adresă [org]. Programul rulează, toate stările procesorului și conținutul memoriei sunt scrise formatate secvențial într-un fișier de ieșire (.html). Acest fișier poate fi analizat.

[Adevărat, există și o implementare interactivă, cu execuție pas cu pas a programului, capacitate de backstep și așa mai departe. dar în scopuri educaționale, versiunea .html este mai potrivită]

asa de?
Opiniile de adăugat, sugestii, contraopiniile, întrebările?
Salut toate comentariile, dacă merită din punct de vedere al conținutului, le voi folosi.
Mulțumesc anticipat.

Robot programabil pentru copii

Aveți experiență cu roboții programabili disponibili în prezent pentru copii?

Mă gândesc la un robot programabil pentru un copil de 8 ani. De exemplu, îmi place următorul lego:
https://www.lego.com/hu-hu/product/boost-creative-toolbox-17101

Cu toate acestea, cred că un simplu joc de programare pentru tabletă sau PC are mai multe opțiuni.

Ce crezi?
Un robot portabil poate fi o poartă mai bună spre programare decât o aplicație?
Este posibil să aveți un robot specific care s-a conformat promisiunilor sale?

[rezolvat] Căutare logaritmică (binară) pentru intervale

Cu siguranță au inventat deja ceara spaniolă, care este o varietate de căutare binară în care nu căutăm o valoare exactă, ci doar în care „decalaj” valoarea pe care o căutăm. Adică de ex. care (cel mai mare) element de matrice este mai mare sau egal cu elementul căutat.

De exemplu.
[0] => 0
[1] => 0,02792
[2] => 0,05246
[3] => 0,09098
[4] => 0,126
[5] => 0,2

Și aici aș dori să plasez, să zicem, 0,1, care ar fi soluția corectă pentru 3.
Am încercat să pun algoritmul singur, dar cumva nu este încă frumos - cu siguranță nu a fost prima dată când am venit cu el. Care este numele oficial al acestei sarcini?

Soluția mea deocamdată este:

Editați: acum văd că la sfârșitul https://wiki.prog.hu/wiki/Logaritmikus_keresés_(algoritmus) ultimul paragraf discută doar că.

Tesco UK caritate înșelătorie - testarea AB și o „diviziune și regulă”

Tesco nu este primul care face acest lucru, deși practica nu este necunoscută în Anglia. În general, până acum, au funcționat restaurante, au fost cei care au văzut-o ca o taxă de serviciu pentru prima dată, dar „donația” a fost plasată direct în mijlocul facturii.

Ideea de bază este de a aduna 6,54 GBP la 7 GBP, deoarece unei organizații non-profit îi scade 46p mai bine decât un cumpărător care nu și-a dat seama niciodată. Sau pur și simplu 1 caritate de lire sterline dacă factura depășește 10 lire sterline.

Probabil că aș folosi testarea AB, dar nu pentru îndrăzneală, ci pentru înșelăciune completă. 3 grupuri de clienți:

A: auto-plată: sunt întrebați de bănuțul automat dacă doresc să plătească un bănuț pentru caritate. Dacă nu avem SJW-uri cu păr purpuriu, acestea se pot simți suficient de sigure pentru a răspunde la „Nu”.

B: checkout automat: nu sunt solicitate de checkout-ul automat, ci doar deduceți suma pentru caritate din cont. Nici măcar nu-și dau seama că achiziționarea bacșișului a fost de 17-18 GBP în loc de 16,34 GBP în loc de 16,34 GBP

C: casă umană: probabil că vor da o recompensă casierului dacă încasează. Desigur, este foarte probabil ca fibra stiloului să fie antrenată pentru a „fi căutată”. Dar casierul nu cere, nu respectă reglementările interne, ci doar rauti pe contul său. Nici nu înțelegem de ce.

Apare un articol de ziar. Cei care au primit o extragere „A” la loteria Tesco îi vor vedea pe cei care au primit o extragere „B” sau „C” în comentarii (împărțiți și conduceți). Poate că niciunul dintre ei nu va depune mărturie că victima lui „B” a fost într-adevăr doar un nenorocit în scenariul pe care l-a primit.

Chiar dacă scenariul „B” există, a fost în mod firesc o eroare.

Voi fi curios cu privire la urmărire: văd o mică șansă ca Tesco să primească o mie de gutui semnificative în această țară. Dar Barki poate face orice în acest sens, postează actualizarea aici.

Dați pește cerului că există un GVH și HFSA în Ungaria. Motiv pentru care acestea sunt tratate corect cu siguranță. Corect.

Criptare cu aproape prime?

În weekend, am avut o conversație interesantă cu un profesionist IT care a susținut că unii algoritmi ar fi mulțumiți de rezultate aproape prime atunci când caută numere prime mari, spunând că ar putea funcționa mai eficient din punct de vedere al resurselor.

Pentru mine, noțiunea de „aproape sigur prim” este suficient de înspăimântătoare, dar nu-mi pot imagina să folosesc una în criptarea cu două chei. În cazul cheilor mici, nu ar exista un profit semnificativ, cheile mari sunt folosite acolo unde securitatea este importantă, deci nu ar fi riscate acolo.

Ce știi despre asta? Există într-adevăr astfel de algoritmi de căutare primară care economisesc resurse și sunt cu adevărat folosiți? Dacă da, unde? Noroi?

Cineva a înțeles API-ul eBay sau Amazon aici?

Vedeți întrebarea cu privire la acest subiect: cineva de aici înțelege API-ul eBay sau Amazon?

Dacă aveți experiență practică cu acesta, vă rugăm să ajutați: există o modalitate de a descărca achizițiile mele articol cu ​​articol din magazin?

Probabilitatea de asociere finală Liga Campionilor 8ad

Iată un link:

unde există un tabel de probabilitate al împerecherilor decisive ale BL 8ad în decembrie. Deci, înainte ca duelul să fie extras, care era probabilitatea ca Echipa X să obțină Y ca adversar. Acum știm cine a primit-o.

Mai întâi am codificat cea mai simplă versiune din primul articol (în care una dintre loteriile din 2002 avea aceeași probabilitate ca oricare alta și am numărat fiecare duel și apoi l-am distribuit în 2002). Apoi, tabelul de probabilitate arată astfel:

Bineînțeles, acest lucru nu este bun, deoarece nu luăm în considerare strategia de remiză a UEFA (unde primesc mai întâi un loc 2, apoi caută un adversar pe locul 1 din echipele rămase, apoi trage din nou un loc 2 etc.) . Codul pentru acest lucru este aici în baza64:

Acest cod conține numere aleatorii, deci obținem întotdeauna un rezultat diferit, nu este posibil să spunem probabilitățile cu precizie. Apoi mi-a venit în minte că putem elimina și numerele aleatorii prin numărarea tuturor rezultatelor posibile ale extragerii UEFA (80720640 mi-a ieșit ca urmare) și numărarea duelului care a avut loc în el. Iată codul base64:

Dar aici am obținut același tabel ca în primul caz (când 2002 era o remiză diferită)! Unde este problema cu trenul gândirii? Valorile reale de probabilitate nu pot fi determinate fără generarea aleatorie de numere?

p.s.: pentru cei care nu sunt acasă în fotbal, există atât de mulți aditivi încât

- fiecare echipă aflată pe locul 1 va întâlni locul 2

- cei care au fost într-un grup nu se pot aduna în finala 8ad (https://www.uefa.com/uefachampionsleague/standings)

- echipe din aceeași țară nu pot fi extrase

Iată videoclipul despre modul în care a avut loc extragerea actuală: https://www.youtube.com/watch?v=iSR4PaAiHn4

Transmiterea vorbirii în rețea - contemplare

Să facem exact asta: există două mașini, inclusiv o conexiune la rețea, și ar trebui cumva să transferați sunetul.

Sarcina este superficial simplă. Semnalul analogic este eșantionat, comprimat, criptat la cerere, transmis prin rețea, decriptat pe cealaltă parte, decomprimat, datele sunt transmise către serverul audio și apoi se joacă la aceeași frecvență de eșantionare. Oh, sigur.:)

Pentru ca acest lucru să funcționeze, părul de pe părțile de trimitere și de recepție are nevoie de aceeași frecvență de eșantionare. Dacă acest lucru nu este adevărat și receptorul absoarbe sunetul mai încet decât transmite emițătorul, va exista o depășire a tamponului. Dacă, pe de altă parte, înghițim probele mai repede decât ajung, subfluența tamponului se va termina. Cu toate acestea, 44,1 kHz pe partea de trimitere și recepție este doar nominal atât de mult.

Privind la programe în mod superficial, am văzut că, în cazul unui sub-flux de tampon, cantitatea de date care trebuie tamponată este crescută, adică lungimea bufferului și, astfel, latența. Am fi rezolvat ceva cu asta? Probabil că am târât calul mort pe strada de alături: expeditorul continuă să trimită mai încet decât cel care primește datele mănâncă datele. Cu un tampon mai mare, sunetul se va sparge mai rar, dar dacă se oprește, va rămâne silențios mai mult timp. Latența crescută, pe de altă parte, va reduce complet algoritmii de suprimare a ecoului.

Dar am găsit o funcție cu un nume promițător:

pa_stream_update_sample_rate ()

Modificați rata de eșantionare a fluxului în timpul redării.

Am crezut că saturația tamponului ar trebui monitorizată pe partea de recepție și abaterea de la valoarea optimă ar putea fi utilizată ca punct de referință pentru un controler de tip integrator. Evident, sunt necesare limitatori, dar acest lucru este ușor de implementat. Frecvența de eșantionare ar trebui să fie reglată fin pentru a se asigura că, în medie, frecvența de eșantionare de pe partea emițătorului și a receptorului este exact aceeași cu frecvența de eșantionare.

Desigur, aceasta implică reglarea fină a vitezei de redare și a frecvenței sunetului audibil, dar în cazul sunetului de vorbire, nu cred că va fi deranjant.

Mă gândesc la această funcție pe care o degenerează în eșantionare în adâncurile sufletului său, deoarece nu cred că plăcilor de sunet li se poate da o frecvență de eșantionare cu o rezoluție de 1 Hz.

Care sunt părerile tale? O sa mearga?

În primul rând, intenționez să scriu un program de test care să redea, să zicem, un semnal sinusoidal de 1 kHz în timp ce schimb frecvența de eșantionare. Nu am început încă și nu știu când voi avea timp pentru asta, așa că aveți răbdare.:)