Előállították a legelső felhasználói program forráskódját

Címkék

Egy csapatnyi, az Intel Múzeum 4004-es mikroprocesszorának kiállításán dolgozó "digitális archeológus" újra nagyot alkotott. 36 évvel azután, hogy az Intel 1971. november 15-én bemutatta az első mikroprocesszorát, ezek a számítógép-történészek arra a felhasználói programra irányították a figyelmet, amit legelőször írtak egy általános célú mikroprocesszorra: a Busicom 141-PF számológépre.

Kíváncsi vagy, hogyan tömörített egy teljes négyfunkciós, kiíratós számológépet Masatoshi Shima csupán 1024 byte-nyi ROM-ba? Nézd meg az újraalkotott assembly "forráskódot", amit a csapat legújabb tagja, a magyar Kintli Lajos analizált, dokumentált és kommentált.

Bővebben az Intel Múzeum honlapján. Forrás: /.

Hozzászólások

Klassz :)

(Figyeljétek meg, az M$ majd nyúl belőle kódot a Vistába!)

Multkor egy egyszeru hazit kellett megoldania egy hatodikosnak.

Ha osszeszoroznad 1-tol 50-ig a szamokat, akkor hany 0 lenne a vegen?

Excelben az ember megcsinalja, akkor csodalkozik, hogy kb. 30 nulla van a vegen, holott 12 a helyes megfejtes.

Szolhatna, hogyha egy cella tartalma tulcsordult. (cellak formazasnal be lehet allitani, hogy irja ki a teljes szamot (kb. 60 szamjegy). Csak kicsit sok benne a nulla)

(mondjuk python-ban 6 sor a program, dehat ugye a koznep(ertsd: nem programozo) excelhez fer hozza)

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

Most vagy én vagyok oktondi, vagy a php is szar ebből a szempontból.
Kipróbáltam 2 féle képpen is:
1.) while

$i = 1;
$j = 1;
while ( $i <= 50 ) {
$temp = $j * $i;
$j = $temp;
$i++;
}

2.) sima szorozgatás

$osszes = 1*2*3*4*5*6*7*8*9*10*...*46*47*48*49*50;

mind2 esetben az eredmény:
30414093201713375576366966406747986832057064836514787179557289984

Most akkor mi van?

bc:
b=1;for (a=1;a<=50;a++) {b*=a;}; b
30414093201713378043612608166064768844377641568960512000000000000

Verseny feladat:
kerdes ugyen ez, de az 1-n ig kell megmondani, hany nulla van vegen, kurva gyorsan es n mondjuk lehet 1 milla is.
(Hasznalhato nyelvek c,c++,pascal,java, de most ez mindegy)

Nagy szamok kezelesere nem szokas felkesziteni ez ilyen eszkozoket, mint php.
php tipusok resznel bovebben.
http://phpbuilder.com/manual/en/language.types.integer.php
http://phpbuilder.com/manual/en/language.types.float.php
32 bit unsigend-et altalaban minimum kezel.
64 bit -es lebegopontosat.

Big Integer
Ezzel tudsz nagy szamot kezelni.

ebben a feladatban egyaltalan nem kell nagy szamokkal szamolni de ellenorizni lehet:
import java.math.BigInteger;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Nulla {
public static void main(String [] args) {
long num = Long.parseLong(args[0]);
BigInteger multi = new BigInteger("1");
for (int i = 2; i <= num; multi = multi.multiply(new BigInteger(new Long(i).toString())), i++);
System.out.println("Szorzat: " + multi);
Pattern pattern = Pattern.compile("0*$");
Matcher matcher = pattern.matcher(multi.toString());
if (matcher.find())
System.out.println("Regexp: " + matcher.group().length());
}
}

Bár először arra gondoltam, hogy minden számot primtényezős szorzatra bontanék és a 2 és 5 párba állítanám.
A 2-ből sok is van így elég az 5-t számolni...
Ezek alapján:

#!/bin/bash
j=0
i=$1
echo $i
while [ $i -ne 0 ]; do
i=`expr $i / 5`
j=`expr $j + $i`
done
echo $j

1 000 000-nál: 249998 db nulla van a szám végén.

Bocsi, elírás van: Busicon helyett Busicom a cég neve, akik először használták ai i4004-et.

Kintli Lajosnak gratula, és köszönjük a sok melót, amit ebbe belefektetett!

Es nincs 1024 byte az sw.

---
pontscho / fresh!mindworkz

Aztan jon Nagyarc LTD, es szabadalomsertes miatt pereli oket ...

Bénázok ezerrel, mert nem lelem semerre a forrást...