Ero sivun ”Python 2/Wikishakkisivu” versioiden välillä

Poistettu sisältö Lisätty sisältö
Raimondo (keskustelu | muokkaukset)
Raimondo (keskustelu | muokkaukset)
Rivi 264:
{{hidden end|toggle=right}}
 
{{hidden begin|title=Kolmas karvalakkiversio (pulmia matriisin talletuksessa tiedostoon)|toggle=right}}
 
Seuraava ohjelma lukee kommentteja sisältävän shakkilautamallineen parametrinä annetusta syötetiedostosta asema0, tallettaa yläotsikkorivit sellaisenaan tulostiedosyoon, talletaa sisältörivit matriisiin, suorittaa siirron matriisissa (vasta testioperaation), tallettaa muokatun matriisin tulostiedostoon (tämä osa ei toimi vielä oikein) ja tallettaa alaotsikkorivit sellaisenaan tulostiedostoon.
 
;Koodi:
<source lang="Python">
# -*- coding: cp1252 -*-
 
import numpy as N
def shakkisiirto (asema0, asema1, siirto='ei siirtoa'):
 
 
#------------------------------------------------------------------
# Syotetiedoston testiluku ja tulostus
Rivi 282 ⟶ 284:
print " \n ==== Syotetiedosto ==== \n"
print(syote) # Tulostetaan merkkijono
 
#---------------------------------------------------------------------------------------
# Matriisin sl eli shakkilauta alustus ruutujen posititiotunuksilla, seka sisaltorivien
Rivi 288 ⟶ 290:
# mukaisella sisaltodatalla.
#------------------------------------------------------------------------------------------
 
sl = N.array(([' ', 'a8', 'b8', 'c8', 'd8', 'e8', 'f8', 'g8', 'h8', ' '],
[' ', 'a7', 'b7', 'c7', 'd7', 'e7', 'f7', 'g7', 'h7', ' '],
Rivi 297 ⟶ 299:
[' ', 'a2', 'b2', 'c2', 'd2', 'e2', 'f2', 'g2', 'h2', ' '],
[' ', 'a1', 'b1', 'c1', 'd1', 'e1', 'f1', 'g1', 'h1', ' ']))
 
#-------------------------------------------------------------------------------------------
# Matriisin solujen indeksit
#--------------------------------------------------------------------------------------------
 
# alkuosa a b c d e f g h loppuosa
# 8 sl[0][0] sl[0][1] sl[0][2] sl[0][3] sl[0][4] sl[0][5] sl[0][6] sl[0][7] sl[0][8] sl[0][9]
Rivi 311 ⟶ 313:
# 2 sl[6][0] sl[6][1] sl[6][2] sl[6][3] sl[6][4] sl[6][5] sl[6][6] sl[6][7] sl[6][8] sl[6][9]
# 1 sl[7][0] sl[7][1] sl[7][2] sl[7][3] sl[7][4] sl[7][5] sl[7][6] sl[7][7] sl[7][8] sl[7][9]
 
#-------------------------------------------------------------------------------------------
# Matriisin testitulostus
#--------------------------------------------------------------------------------------------
 
# print " \n ==== Alustetun matriisin testitulostus ==== \n"
# print sl[0][0], sl[0][1], sl[0][2], sl[0][3], sl[0][4], sl[0][5], sl[0][6], sl[0][7], sl[0][8], sl[0][9]
# print sl[0][0], sl[1][1], sl[1][2], sl[1][3], sl[1][4], sl[1][5], sl[1][6], sl[1][7], sl[1][8], sl[1][9]
# print sl[0][0], sl[2][1], sl[2][2], sl[2][3], sl[2][4], sl[2][5], sl[2][6], sl[2][7], sl[2][8], sl[2][9]
# print sl[0][0], sl[3][1], sl[3][2], sl[3][3], sl[3][4], sl[3][5], sl[3][6], sl[3][7], sl[3][8], sl[3][9]
# print sl[0][0], sl[4][1], sl[4][2], sl[4][3], sl[4][4], sl[4][5], sl[4][6], sl[4][7], sl[4][8], sl[4][9]
# print sl[0][0], sl[5][1], sl[5][2], sl[5][3], sl[5][4], sl[5][5], sl[5][6], sl[5][7], sl[5][8], sl[5][9]
# print sl[0][0], sl[6][1], sl[6][2], sl[6][3], sl[6][4], sl[6][5], sl[6][6], sl[6][7], sl[6][8], sl[6][9]
# print sl[0][0], sl[7][1], sl[7][2], sl[7][3], sl[7][4], sl[7][5], sl[7][6], sl[7][7], sl[7][8], sl[7][9]
 
#----------------------------------------------------------
# Talletetaan syötetiedoston sisaltorivit matriisiin
Rivi 333 ⟶ 335:
f_tulos = open(asema1, 'a') # Avataan lisayskirjoitusta varten.
f_rivi = open(asema0, 'r') # Avataan lukemista varten.
 
for j in range(0,4): # Luetaan ja talletaan otsikkorivit tulostiedostoon.
rivi = f_rivi.readline()
f_tulos.write(rivi)
for j in range(0,8): # Luetaan ja talletaan sisaltorivit matriisiin
rivi = f_rivi.readline()
r = rivi.split('|')
sl[j] = r
 
#----------------------------------------------------------
# Mariisin sisalto ennen siirtoa
Rivi 348 ⟶ 350:
print ' \n ====sisaltomatriisi ennen sirtoa==== \n'
print sl
 
#--------------------------------------------------------
# Suoritetaan siirto
#--------------------------------------------------------
# Parametrina annetun siirtomerkinnan tulostus
print(' \n ==== Siirto ==== \n')
print(siirto)
# ==== Tama on vasta testisiirto!!!!!!!=====
# Seuraavat rivit pitaa korvata yleisella logiikalla.
sl[4][5] = sl[6][5] # e4 <- e2
sl[6][5] = ' ' # tyhjataan e2
 
#----------------------------------------------------------
# Mariisin sisallon testitulostus siirron jalkeen
Rivi 367 ⟶ 369:
print ' \n ====sisaltomatriisi siirron jalkeen==== \n'
print sl
 
#----------------------------------------------------------
# Talletaan muokattu matriisi tulostiedostoon
#----------------------------------------------------------
for j in range(0,78):
 
for i in range(0,10):
# === Tama ei viela toimi?????????? ===
jono# =print jono[1:6] + '|' + str(sl[j][i]),
# Matriisista saadaan tiedostoon vain
if i==0:
# ensimmaisen rivin ensimmainen ja viimeinen solu seka
jono = sl[j][i]
# viimeisen rivin ensimmainen ja viimeinen solu.
else:
jono = '|' + sl[j][i]
for j in (0,7):
jono = str f_tulos.write(sl[j]jono)
for i in (0,9):
jono = jono[1:6] + '|' + str(sl[j][i])
f_tulos.write(jono)
 
#------------------------------------------------------------------
# Talletaan alaotsikkorivit (3 kpl) tulostiedostoon
#------------------------------------------------------------------
rivifor =j f_rivi.readlinein range(0,3):
rivi = f_rivi.readline()
f_tulos.write(rivi)
rivi = f_rivi f_tulos.readlinewrite(rivi)
f_tulos.write(rivi)
rivi = f_rivi.readline()
f_tulos.write(rivi)
f_rivi.close() # suljetaan tiedosto
f_tulos.close() # suljetaan tiedosto
 
#------------------------------------------------------------------
# Tulostiedoston testiluku ja tulostus
Rivi 431 ⟶ 427:
}}
 
==== Alustetun matriisin testitulostus ====
 
a8 b8 c8 d8 e8 f8 g8 h8
a7 b7 c7 d7 e7 f7 g7 h7
a6 b6 c6 d6 e6 f6 g6 h6
a5 b5 c5 d5 e5 f5 g5 h5
a4 b4 c4 d4 e4 f4 g4 h4
a3 b3 c3 d3 e3 f3 g3 h3
a2 b2 c2 d2 e2 f2 g2 h2
a1 b1 c1 d1 e1 f1 g1 h1
====sisaltomatriisi ennen sirtoa====
Rivi 475 ⟶ 460:
|
|=
8 |rd|nd|bd|qd|kd|bd|nd|rd|=
7 |pd|pd|pd|pd|pd|pd|pd|pd|=
1 ||=
6 | | | | | | | | |=
5 | | | | | | | | |=
4 | | | | |pl| | | |=
3 | | | | | | | | |=
2 |pl|pl|pl|pl| |pl|pl|pl|=
1 |rl|nl|bl|ql|kl|bl|nl|rl|=
a b c d e f g h
|