Písemka

Napište funkci, která vypíše prvních 20 členů Fibonacciho posloupnosti. Pro její členy platí:

Ukázkové řešení - Ruby

a = b = 1
20.times do
	puts a
	a, b = b, a+b
end

Ukázkové řešení - C++

#include <iostream>
int main(){
	int pole[] = {1,1}; // délku pole si počítač domyslí, když mu rovnou dáme jeho obsah
	std::cout << pole[0] << std::endl << pole[1] << std::endl; // vypíšeme první dva prvky posloupnosti
	for (int i=0; i<18; i++){ // zbývá 18 prvků
		std::cout << (pole[i%2] = pole[0] + pole[1]) << std::endl; // ukládáme je do pole střídavě vlevo a vpravo a výsledek rovnou vypisujeme
	}
	return 0; //formalita
}

Ukázkové řešení - Assembler (NASM na Linuxu, 64bit)

section .data
	retezec: db "    ", 10
section .text
	global _start

_start:
; inicializace: AX, DX jsou první dva členy, CX je požadovaný počet
	mov cx, 20
	mov ax, 1
	mov dx, 1
	
; hlavní cyklus pro všech 20 členů posloupnosti
krok:
	dec cx
	push ax
	push cx
	push dx
	mov rbx, retezec
	add rbx, 3
	mov cx, 10

; převod čísla v AX na řetězec znaků	
prevod:
	mov dx, 0
	div cx
	add dl, '0'
	mov [rbx], dl
	sub rbx, 1
	cmp ax, 0
	jnz prevod

; systémové volání - vypíšeme řetězec na výstup
	mov eax, 4
	mov ebx, 1
	mov ecx, retezec
	mov edx, 5
	int 80h
	
; příprava na další krok cyklu
	pop dx
	pop cx
	pop ax
	mov bx, ax
	add bx, dx
	mov ax, dx
	mov dx, bx
	cmp cx, 0
	jnz krok
	
; konec programu
	mov eax, 1
	mov ebx, 0
	int 80h