Created
October 17, 2013 15:50
-
-
Save MrBlaise/7027356 to your computer and use it in GitHub Desktop.
Emelt informatika érettségi 2008 október - Robot / Solution for Advanced Computer Science Matura 2008 october (Hungary)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# Rostás Balázs - Emelt informatika érettségi 2008 október - Robot | |
def egyszerusitheto(szoveg): | |
karakterek = szoveg[:2] | |
if karakterek == "ED" or karakterek == "DE" or karakterek == "KN" or karakterek == "NK": | |
return True | |
if len(szoveg) <= 2: | |
return False | |
else: | |
return egyszerusitheto(szoveg[2:]) | |
# 1. feladat: | |
fajlBe = open("program.txt", "r") | |
programSzam = int(fajlBe.readline()) | |
programok = [ program.strip() for program in fajlBe ] | |
programok = [ list(program) for program in programok] | |
fajlBe.close() | |
print("1. feladat - program.txt beolvasása - KÉSZ!") | |
# 2. feladat: | |
# a.) | |
utSzam = int(input("\n2. feladat - Kérem az utasítássor sorszámát: ")) | |
egyszProgram = "" | |
for char in programok[utSzam-1]: | |
egyszProgram += char | |
if egyszerusitheto(egyszProgram): | |
print("egyszerűsíthető") | |
else: | |
print("nem egyszerűsíthető") | |
# b.) | |
y = 0 | |
x = 0 | |
for utasitas in programok[utSzam-1]: | |
if utasitas == "E": | |
y += 1 | |
elif utasitas == "D": | |
y -= 1 | |
elif utasitas == "N": | |
x -= 1 | |
else: | |
x += 1 | |
print(abs(y),"lépést kell tenni az ED,", abs(x), "lépést a KN tengely mentén.") | |
# c.) | |
y = 0 | |
x = 0 | |
tavok = [] | |
for utasitas in programok[utSzam-1]: | |
if utasitas == "E": | |
y += 1 | |
elif utasitas == "D": | |
y -= 1 | |
elif utasitas == "N": | |
x -= 1 | |
else: | |
x += 1 | |
tav = (abs(y)**2 + abs(x)**2)**0.5 | |
tavok.append(tav) | |
tav = max(tavok) | |
sorszam = tavok.index(tav) + 1 | |
print(sorszam, "{0:.3f}cm".format(tav)) | |
# 3. feladat: | |
print("\n3. feladat:") | |
energia = 0 | |
for sorszam, program in enumerate(programok): | |
for index in range(len(program)): | |
energia += 1 | |
if index == 0: | |
energia += 2 | |
elozoBetu = program[index] | |
elif program[index] != elozoBetu: | |
energia += 2 | |
elozoBetu = program[index] | |
if energia <= 100: | |
print(sorszam+1, energia) | |
energia = 0 | |
# 4. feladat: | |
fajlKi = open("ujprog.txt", "w") | |
for program in programok: | |
elozoBetu = program[0] | |
tavolsag = 0 | |
program.append("0") | |
for utasitas in program[1:]: | |
tavolsag += 1 | |
if utasitas != elozoBetu: | |
if tavolsag == 1: | |
print(elozoBetu, end="", file=fajlKi) | |
else: | |
print(tavolsag, elozoBetu, sep="", end="", file=fajlKi) | |
tavolsag = 0 | |
elozoBetu = utasitas | |
print("\n", end="",file=fajlKi) | |
fajlKi.close() | |
print("\n4. feladat - ujprog.txt létrehozása - KÉSZ!") | |
# 5. feladat: | |
ujKod = input("\n5.feladat - Kérem adjon meg egy új formátumú utasítást, az átalakításhoz: ") | |
kiirando = "" | |
szam = "" | |
szamVolt = False | |
for char in ujKod: | |
if char.isdecimal(): | |
szam += char | |
szamVolt = True | |
elif szamVolt: | |
kiirando += int(szam)*char | |
szam = "" | |
szamVolt = False | |
else: | |
kiirando += char | |
print(kiirando) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment