Kommentti "Ei vaan toimi" -ei oikein kerro meille yhtään mitään.
Vinkkinä; paloittele se projekti pienempiin osiin. Kirjoita asiat vaikka paperille ylös ja piirrä noita taulukon läpikäyntejä niin helpottaa asian hoksaamista. Sitten koodaat pala kerrallaan. Jos et jotain palaa saa toimimaan niin kysy täältä apua.
Kerroinkin tuossa jo, miten saat hetun viimeisen merkin sieltä irralleen. Se onnistui alla olevalla koodilla.
JavaScript:
const checkSum = hetu[10];
Tuo kymmene tarkoittaa, että otetaan merkki, jonka indeksi on 10. Koska indeksit alkavat nollasta, tuo tarkoittaa 11. merkkiä eli tässä tapauksessa viimeistä. Jos haluat erikseen sieltä sen välimerkin, se on 7. merkki eli sen indeksi on 6. Kokeiles siis tuota indeksillä 6.
Jes, toimii paremmin kun alottaa rivi-riviltä. Nyt sain edistystä ja const checkSum = hetu[6] tuotti halutun tuloksen.
Pitääkö tuo merkki (+ tai - tai A) sitten seuraavaksi muuntaa merkitä joksikin että JS ymmärtää sen olevan tuossa formaatissa?
Voisiko toimia jotenkin näin sitten tuon checksumin saannin jälkeen:
Kiitokset raadille hyvistä vastauksista ja siitä että viitsitte etsiä molemmat virheet. Välillä omat yritelmät liipannut läheltä, olen kuin sokea kana yrittänyt löytää oikaa kombinaatiota. mm olen kokeillut parametrien (sana1, sana2) lisäämistä funktiokutsuun ja return komennon lisäämistä funktion loppuun, mutta en tajunnut kokeilla molempia yhtä aikaa. Tämä selvitti kyllä hyvin!
// tämä on vertailu jota sinun pitää käyttää if-elsessä
a === 10
b === "A"
c === "-"
// muista launausmerkit merkkijonoissa!
// ei näin koska tämä on assignment joka asettaa muuttujaan arvon:
a = 10
Ensinnäkin, = on sijoitusoperaattori. Sillä sijoitetaan oikealla olevan lausekkeen arvo vasempaan muuttujaan. Ei siis toimi if-lauseessa. Haluat yhtäsuuruusvertailun, joka on ===. Siis kolme yhtäsuuruusmerkkiä.
Toiseksi, jos haluat vertailla merkkijonoja, sulla pitää olla sen vertailuoperaattorin oikealla puolella merkkijono. + ei ole merkkijono, mutta '+' on.
Pääsisitkö näillä taas eteenpäin?
PS. Eikö teillä ole mitään opetusmateriaalia, josta tämä selviää? Nyt ollaan niin perusteissa, että kyllä tämä pitäisi olla kerrottu koulun toimesta.
Kiitokset raadille hyvistä vastauksista ja siitä että viitsitte etsiä molemmat virheet. Välillä omat yritelmät liipannut läheltä, olen kuin sokea kana yrittänyt löytää oikaa kombinaatiota. mm olen kokeillut parametrien (sana1, sana2) lisäämistä funktiokutsuun ja return komennon lisäämistä funktion loppuun, mutta en tajunnut kokeilla molempia yhtä aikaa. Tämä selvitti kyllä hyvin!
disclaimer: tämä ratkaistiin jo aiemmin, mutta jatketaanpa nyt sitten vielä...
Koodi:
using System;
namespace sanaVRT
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Kirjoita sana 1:");
string sana1 = Console.ReadLine();
Console.WriteLine("Kirjoita sana 2:");
string sana2 = Console.ReadLine();
sanaVRT();
}
static void sanaVRT()
{
if (sana1.Length > sana2.Length)
{
Console.WriteLine("Sana 1 on pidempi");
}
else if (sana2.Length > sana1.Length)
{
Console.WriteLine("Sana 2 on pidempi");
}
if (sana2.Length == sana1.Length)
{
Console.WriteLine("Sanat ovat yhtä pitkiä");
}
}
}
}
Kokeilin aiemmin tälläista jossa funktion alustuksessa on void ilman parametreja. mutta sain virheitä joissa se herjasi ettei (funktio) tunne sana 1 ja sana 2 muuttujia?
Tämä antoi seuraavat virheet: main.cs(21,17): error CS0103: The name `sana1' does not exist in the current context
main.cs(25,22): error CS0103: The name `sana2' does not exist in the current context
main.cs(29,17): error CS0103: The name `sana2' does not exist in the current context
Kysymys 1:
Onko niin että tämä esimerkki "pitäisi" toimia ilman palautettavia parametreja koska itse lopputuloksen tulostus tapahtuu funktion toimesta?
Jos näin on niin millä saan funktiolle tiedon mitä nuo sana 1 ja 2 ovat? Eli nuo herjat pois? (siis muuten kuin määrittelemällä parametrit + return;.
Kysymys2:
Miten tämä funktio pitäisi toteuttaa jos halutaan palauttaa tulos, esim "pidempi" ja hoitaa tulostus pääohjelmassa. Se on varmaan se mitä alunperin hainkin, tällä pääohjelman ja funktion yhdistelmällä.
Kysymys 1:
Onko niin että tämä esimerkki "pitäisi" toimia ilman palautettavia parametreja koska itse lopputuloksen tulostus tapahtuu funktion toimesta?
Jos näin on niin millä saan funktiolle tiedon mitä nuo sana 1 ja 2 ovat? Eli nuo herjat pois? (siis muuten kuin määrittelemällä parametrit + return;.
jolloin tulostat siellä funktiossa mitä ikinä tulostatkaan
Kysymys2:
Miten tämä funktio pitäisi toteuttaa jos halutaan palauttaa tulos, esim "pidempi" ja hoitaa tulostus pääohjelmassa. Se on varmaan se mitä alunperin hainkin, tällä pääohjelman ja funktion yhdistelmällä.
disclaimer: tämä ratkaistiin jo aiemmin, mutta jatketaanpa nyt sitten vielä...
Koodi:
using System;
namespace sanaVRT
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Kirjoita sana 1:");
string sana1 = Console.ReadLine();
Console.WriteLine("Kirjoita sana 2:");
string sana2 = Console.ReadLine();
sanaVRT();
}
static void sanaVRT()
{
if (sana1.Length > sana2.Length)
{
Console.WriteLine("Sana 1 on pidempi");
}
else if (sana2.Length > sana1.Length)
{
Console.WriteLine("Sana 2 on pidempi");
}
if (sana2.Length == sana1.Length)
{
Console.WriteLine("Sanat ovat yhtä pitkiä");
}
}
}
}
Kokeilin aiemmin tälläista jossa funktion alustuksessa on void ilman parametreja. mutta sain virheitä joissa se herjasi ettei (funktio) tunne sana 1 ja sana 2 muuttujia?
Tämä antoi seuraavat virheet: main.cs(21,17): error CS0103: The name `sana1' does not exist in the current context
main.cs(25,22): error CS0103: The name `sana2' does not exist in the current context
main.cs(29,17): error CS0103: The name `sana2' does not exist in the current context
Kysymys 1:
Onko niin että tämä esimerkki "pitäisi" toimia ilman palautettavia parametreja koska itse lopputuloksen tulostus tapahtuu funktion toimesta?
Jos näin on niin millä saan funktiolle tiedon mitä nuo sana 1 ja 2 ovat? Eli nuo herjat pois? (siis muuten kuin määrittelemällä parametrit + return;.
Kysymys2:
Miten tämä funktio pitäisi toteuttaa jos halutaan palauttaa tulos, esim "pidempi" ja hoitaa tulostus pääohjelmassa. Se on varmaan se mitä alunperin hainkin, tällä pääohjelman ja funktion yhdistelmällä.
Funktio tuntee vain omat parametrinsa, omat muuttujansa ja (sen kannalta) globaalit muuttujat, joita ei nyt ole yhtään. Tuossa sana1 ja sana2 on määritelty vain main-funktiossa, joten sanaVRT ei tiedä niistä mitään. Ne pitää siis antaa sille parametreina.
Lisäksi funktiolla voi olla tai voi olla olematta paluuarvo. Jos paluuarvoa ei ole, sen tyypiksi pitää asettaa void. Muussa tapauksessa pitää asettaa paluuarvon tyypiksi se tyyppi, jota funktio palauttaa return-lauseella. Jos paluuarvoa ei käytetä mihinkään (esim. aseteta muuttujaan), kannattaa lähtökohtaisesti olla palauttamatta mitään (ja asettaa paluutyypiksi void).
Tämä varmaan vastaa kysymykseen 1 ainakin ajatuksen tasolla. Kysymykseen 2 taas ei ole yhtä oikeaa vastausta vaan vastaus riippuu siitä, mitä tarkalleen ottaen haluaa tehdä.
Sun funktiot on omissa lohkoissaan, joten SanaVRT ei tunnista Mainissa alustettuja muuttujia sana1 ja sana2. The name `sana1' does not exist in the current context
Myöskin SanaVRT funktion pitää palauttaa aina. Laita vikan iffin tilalle else, tai pelkkä return loppuun.
Nyt tulee niin paljon informaatiota että täytyy vähän miettiä.
Kysytään nyt vielä tästä: eli miten tilanteessa jos funktion parametreiksi määritellään kaksi eri tyyppiä (string & int), esim "static string testF(string name, int age)" , onko tuota funktiota edeltävä datatyyppi edelleen string? ja mikä merkitys sillä on?
Test your C# code online with .NET Fiddle code editor.
dotnetfiddle.net
Tuossa esimerkki miten voisi tulostaa pääohjelmassa, vertailu voisi hyvin käydä mainissa eikä omana funkkarina. Joku osaa varmaan toteuttaa fiksumman tavan
Nyt tulee niin paljon informaatiota että täytyy vähän miettiä.
Kysytään nyt vielä tästä: eli miten tilanteessa jos funktion parametreiksi määritellään kaksi eri tyyppiä (string & int), esim "static string testF(string name, int age)" , onko tuota funktiota edeltävä datatyyppi edelleen string? ja mikä merkitys sillä on?
Se on se paluuarvo jonka funktio palauttaa, ja se on string. Eli funktiossa ennen loppua määrittelet return jotain, ja se on sitten se testF("nimi",42) arvo.
Tossa nyt eka google linkki funktioista:
A function in C is a block of organized reusuable code that is performs a single related action. Every C program has at least one function, which is main(), and all the most trivial programs can define additional functions.
www.tutorialspoint.com
Niin kuin tuossa yllä mainittiin:
Console.Write(funktio("a", "b");
Eli konsoliin tulostetaan funtktio "funktio" paluuarvo.
E: Laitoin C funtkiosta esimerkin, se on kuitenkin simppeli ja toimii aikalailla samalla tavalla kielestä riippumatta.
Test your C# code online with .NET Fiddle code editor.
dotnetfiddle.net
Tuossa esimerkki miten voisi tulostaa pääohjelmassa, vertailu voisi hyvin käydä mainissa eikä omana funkkarina. Joku osaa varmaan toteuttaa fiksumman tavan
Se on se paluuarvo jonka funktio palauttaa, ja se on string. Eli funktiossa ennen loppua määrittelet return jotain, ja se on sitten se testF("nimi",42) arvo.
Tossa nyt eka google linkki funktioista:
A function in C is a block of organized reusuable code that is performs a single related action. Every C program has at least one function, which is main(), and all the most trivial programs can define additional functions.
www.tutorialspoint.com
Niin kuin tuossa yllä mainittiin:
Console.Write(funktio("a", "b");
Eli konsoliin tulostetaan funtktio "funktio" paluuarvo.
E: Laitoin C funtkiosta esimerkin, se on kuitenkin simppeli ja toimii aikalailla samalla tavalla kielestä riippumatta.
Se mikä tässä esimerkissä edelleen askarruttaa on se että, nyt kun käyttäjä määritteli pääohjelmassa muuttujat sana1 ja sana2.
Kuitenkin funktioon: CompareInputLenght laitoit parametreiksi täysin tuntemattomat "firstVal" ja "secondVal" Miksi näin?
Ymmärsin eilisen perusteella, että nuo sulkuihin tulevat funktion parametrit on ikäänkuin input arvoja pääohjelmalta. mutta ne ilmeisesti voi olla mitä vain, vaikka tyhjiä vasta nimettyjä muuttujia?
Eli miksi et käyttänyt sana1 ja sana2 muuttujia joihin oli jo tuo lukujono syötetty. Tai mistä tuo CompareInputLenght - funktio tietää mitä nämä firstval ja secondval muuttujat sisältää jos niitä ei mainita pääohjelmassa?
JA sorry että jankkaan (muille) selvästä asiasta, mutta en pääse eteenpäin ellen ymmärrä tätä tärkeää asiakokonaisuutta.
Nyt tulee niin paljon informaatiota että täytyy vähän miettiä.
Kysytään nyt vielä tästä: eli miten tilanteessa jos funktion parametreiksi määritellään kaksi eri tyyppiä (string & int), esim "static string testF(string name, int age)" , onko tuota funktiota edeltävä datatyyppi edelleen string? ja mikä merkitys sillä on?
Tuo kokonaisuus on funkkarin signature. Aloitin tämän kirjoittamisen eilen, mutta en jaksanutkaan miettiä, että miten tuo pitäisi suomeksi kirjoittaa. Tämä nyt yrittää vastata tuohon uuudempaankin jollakin tasolla.
Eli tuo kertoo mitä palautetaan, ja esittelee myös mitä se syö. Nuo sisääntulevat nimet eivät ole merkityksellisiä (muuta kuin kuvauksen kannalta) funktion ulkopuolella ( sivuutetaan tässä 'out').
Eli ohjelman kannalta merkityksellistä on, että tuolle annetaan oikean tyyppistä kamaa, ja funktion sisällä sitten niitä käytetään jotenkin (TM). Kutsumisen kannalta on siis aivan sama, onko nimi lemmikkiPossuniEtuNimi = "Heikki" vai annatko kutsussa suoraan stringin "Heikki", ilman että välissä tallennettu muuttujaan. CompareIL("Heikki",...
E. Tämä puhelimella, toivottavasti tästä saa jotain selvää
Ohjelmointikieli on eri, mutta jos C#:lle ei ole olemassa fiksua materiaalia, unohtaisin sen hetkeksi kokonaan, siirtyisin Moociin tekemään Javaa ja sitten takaisin C# pariin kun koen ymmärtäväni riittävästi, koska käytännössä ~kaikki sama pätee kuitenkin. Tukikanavat myös löytyvät, ja toki voi kysellä uudestaan jos ei materiaalinkaan perusteella selviä.
Se mikä tässä esimerkissä edelleen askarruttaa on se että, nyt kun käyttäjä määritteli pääohjelmassa muuttujat sana1 ja sana2.
Kuitenkin funktioon: CompareInputLenght laitoit parametreiksi täysin tuntemattomat "firstVal" ja "secondVal" Miksi näin?
Ymmärsin eilisen perusteella, että nuo sulkuihin tulevat funktion parametrit on ikäänkuin input arvoja pääohjelmalta. mutta ne ilmeisesti voi olla mitä vain, vaikka tyhjiä vasta nimettyjä muuttujia?
Eli miksi et käyttänyt sana1 ja sana2 muuttujia joihin oli jo tuo lukujono syötetty. Tai mistä tuo CompareInputLenght - funktio tietää mitä nämä firstval ja secondval muuttujat sisältää jos niitä ei mainita pääohjelmassa?
JA sorry että jankkaan (muille) selvästä asiasta, mutta en pääse eteenpäin ellen ymmärrä tätä tärkeää asiakokonaisuutta.
CompareInputLength() funktio ei periaatteessa välitä muusta kun että sille annetaan kaksi string muuttujaa. Ne muuttujat, sana1 ja sana2 on määritelty pääohjelmassa koska tuo TakeInput() on palauttaa syötetyt arvot.
Olisin toki voinut nimetä CompareInputLength() funktioon sana1 ja sana2 stringit, mutta ajattelin että tuo havainnollistasi tota logiikkaa. Ei ole ehkä paras esimerkki, kun tekee asian vaikeammaksi ilman hyvää syytä. Olio-ohjelmointi on vähän sellasta että alkuun ihan hepreaa ja jossain vaiheessa homma klikkaa päässä ja alkaa hahmottamaan (tai luulee niin)
Ei nyt varsinaisesti ohjelmointikysymys mutta SQL kysymys.
Miten SQL Developerissa saa kyselyn tuloksen tuottamaan ääkkösiä?
Kyselyssä on sarake, jonka nimesin "MÄÄRÄ". Kyselyn tuloksiin tulee "MÄÄRÃ".
Merkistöihin kai tämä jotenkin liittyy, mutta en keksi mistä tuo vaihdetaan..
Koneessa Win 10, Windowsin näyttökielenä English (US) ja muut asetukset suomea. SQL Developerissa on asetuksissa "Encoding" UTF8.
Ei tuo varsinaisesti haittaa mitään mutta minua ärsyttää
Ei nyt varsinaisesti ohjelmointikysymys mutta SQL kysymys.
Miten SQL Developerissa saa kyselyn tuloksen tuottamaan ääkkösiä?
Kyselyssä on sarake, jonka nimesin "MÄÄRÄ". Kyselyn tuloksiin tulee "MÄÄRÃ".
Merkistöihin kai tämä jotenkin liittyy, mutta en keksi mistä tuo vaihdetaan..
Koneessa Win 10, Windowsin näyttökielenä English (US) ja muut asetukset suomea. SQL Developerissa on asetuksissa "Encoding" UTF8.
Ei tuo varsinaisesti haittaa mitään mutta minua ärsyttää
Ei ole siitä kiinni, vanhalla Win 7 koneella toimii ääkköset oikein. Ja jos en väärin muista niin Toad antaa ääkköset oikein.
Tuo ominaisuus tulee siis "select data as "Määrä" from dual" tyylisestä kyselystä, eli ei tietokannasta.
E: Kokeilin Toadilla, tulee oikein.
Ei nyt varsinaisesti ohjelmointikysymys mutta SQL kysymys.
Miten SQL Developerissa saa kyselyn tuloksen tuottamaan ääkkösiä?
Kyselyssä on sarake, jonka nimesin "MÄÄRÄ". Kyselyn tuloksiin tulee "MÄÄRÃ".
Merkistöihin kai tämä jotenkin liittyy, mutta en keksi mistä tuo vaihdetaan..
Koneessa Win 10, Windowsin näyttökielenä English (US) ja muut asetukset suomea. SQL Developerissa on asetuksissa "Encoding" UTF8.
Ei tuo varsinaisesti haittaa mitään mutta minua ärsyttää
Minkä takia seuraava argumentti on true? Eikö ! muuta tuon ensimmäinen false:ksi, jolloin ohjelman pitäisi siirtyä seuraavaan if ehtoon kun molemmat eivät täyty?
luku a on 100
function luku(a) {
if ( !a % 100 == 0 && a % 4 == 0 ) {
message = "totta";
Minkä takia seuraava argumentti on true? Eikö ! muuta tuon ensimmäinen false:ksi, jolloin ohjelman pitäisi siirtyä seuraavaan if ehtoon kun molemmat eivät täyty?
luku a on 100
function luku(a) {
if ( !a % 100 == 0 && a % 4 == 0 ) {
message = "totta";
Taas Typescriptiä. Testejen mock dataa varten haluaisin luoda apufunktion, joka konvertoi minkä tahansa tyyppisen datan promiseksi, mutta säilyttää kovertoitavan datan tyypin.
Eli esim jos konvertoin esimerkin getRaceCalendarReturnin promiseksi näin: const promise = toPromise(getRaceCalendarReturn), niin haluaisin promisen tyypin olevan Promise<RaceCalendarEvent[]> Promise<any> sijasta.
Miten saan alla olevan koodinpätkän toistumaan 10 000 kertaa? Koodi siis lätkii pöydälle 13 korttia korttipakasta. Mikäli pakasta tulleen kortin numero on sama kuin sen järjestys, olen "hävinnyt" pelin. Mikäli saan lätkittyä 13 korttia pöydään saamatta korttia, joka vastaa vuorossa olevaa korttia järjestyksessä, "voitan" pelin ja saan yhden pisteen. Tämä pitäisi toistaa 10 000 kertaa ja laskea onnistumisten määrä yhteen.
Koodi:
draw=0 #Ensimmäinen kortti on vuoronumeroltaa 0, koska myös korttipakan pienin kortti on arvoltaan 0
poang=0
for card in range(13):
k=random.choice(kortlek) #valitsee pakasta kortin
kortlek.remove(k) #poistaa pakasta käytetin kortin
if k==draw: #jos nostettu kortti vastaa sen sijalukua, loppuu peli siihen ja uusi kierros alkaa
break
elif draw==12: #jos pääsen loppuun asti pelissä saamatta vuorolukua vastaavaa korttia, saan yhden pisteen"
poang=poang+1
else: #jos nostettu kortti ei vastaa vuoronumeroa, otan uuden kortin
draw=draw+1
print poang #tulostaisi 10 000 kierroksen jälkeen voittojen määrän
Tätä ennen on koodinpätkä, joka luo korttipakan ja sekoittaa kortit. Vain numeroilla on väriä, ei maalla.
Yritetty on ja se ei valitettavasti suostu toimimaan:
File "C:\Python27\lib\random.py", line 274, in choice
return seq[int(self.random() * len(seq))] # raises IndexError if seq is empty
IndexError: list index out of range
Kortti-casen sain toimimaan, mutta vielä viimeisellä kysymyksellä haluaisin vaivata (Python 2.7). Alla olevan koodin tulisi simuloida shakkilautaa ja koodin tulisi laskea todennäköisyydet sille, että satunnaisiin paikkoihin asetetut a) kaksi tornia ja b) kaksi kuningatarta uhkaisivat toisiaan jos simulaatio ajettaisiin 10 000 kertaa. Olen saanut alla olevan pätkän rakennettua, mutta siinä on pari ongelmaa.
* Ensinnäkin nappulat eivät saisi osua samaan ruutuun.
* Kuningattaren liikerata on laskettuna väärin
Onko neuvoja, miten koodia muuttaa jotta yllä olevat kaksi asiaa saisi toimimaan? Mieluusti niin, että alkuperäistä koodia muokattaisiin mahdollisimman vähän.
Koodi:
import random
rows=range(1,9) #generates the row number
columns=range(97,97+8) #generates the column number
hot=0 #times threat took place
icke_hot=0 #times threat did not take place
for spel in range(10000):
white_row=random.choice(rows) #Gets position in row
black_row=random.choice(rows)
white_column=random.choice(columns) #Gets position in column
black_column=random.choice(columns)
if white_column==black_column or white_row==black_row: #checks if rook can attack
hot=hot+1
elif white_column==black_column or white_column==black_column+1 or white_column==black_column-1:
hot=hot+1
#checks if queen can attack
elif white_row==black_row or white_row==black_row+1 or white_row==black_row-1:
hot=hot+1
#checks if queen can attack
else:
icke_hot=icke_hot+1
print "Threats took place in", hot/100.0,"% of cases"
print hot
print icke_hot
Kortti-casen sain toimimaan, mutta vielä viimeisellä kysymyksellä haluaisin vaivata (Python 2.7). Alla olevan koodin tulisi simuloida shakkilautaa ja koodin tulisi laskea todennäköisyydet sille, että satunnaisiin paikkoihin asetetut a) kaksi tornia ja b) kaksi kuningatarta uhkaisivat toisiaan jos simulaatio ajettaisiin 10 000 kertaa. Olen saanut alla olevan pätkän rakennettua, mutta siinä on pari ongelmaa.
* Ensinnäkin nappulat eivät saisi osua samaan ruutuun.
* Kuningattaren liikerata on laskettuna väärin
Onko neuvoja, miten koodia muuttaa jotta yllä olevat kaksi asiaa saisi toimimaan? Mieluusti niin, että alkuperäistä koodia muokattaisiin mahdollisimman vähän.
Koodi:
import random
rows=range(1,9) #generates the row number
columns=range(97,97+8) #generates the column number
hot=0 #times threat took place
icke_hot=0 #times threat did not take place
for spel in range(10000):
white_row=random.choice(rows) #Gets position in row
black_row=random.choice(rows)
white_column=random.choice(columns) #Gets position in column
black_column=random.choice(columns)
if white_column==black_column or white_row==black_row: #checks if rook can attack
hot=hot+1
elif white_column==black_column or white_column==black_column+1 or white_column==black_column-1:
hot=hot+1
#checks if queen can attack
elif white_row==black_row or white_row==black_row+1 or white_row==black_row-1:
hot=hot+1
#checks if queen can attack
else:
icke_hot=icke_hot+1
print "Threats took place in", hot/100.0,"% of cases"
print hot
print icke_hot
DarryIG avasikin stackoverflowssa noita ongelmia tuossa (mutta ymmärsin, että kaipaat hieman lisää selkokieltä?).
Olettaen, että nuo a ja b ovat tosiaan erilliset tapaukset, niin sinun tulisi testata ne erikseen, nyt lisäilet 'osumia' s.e. molemmat variaatiot ovat mukana. Eli tarkista_osuuko_kuningatar tms suattaisi olla hyvä ajatus. (ruutupaperilla tai excelillä mietit miten kuningatar liikkuu... Yksi suunta +1 molempiin akseleihin, toinen +1, - 1 jne.)
Lisäksi huomio siitä, että voit keksiä paikat ottamalla yhden 64:sta kolumni-rivi-parista ja sitten seuraavan jäljelle jäävistä 63:sta ratkaisee tuon arpomisongelman.
Olettaen, että nuo a ja b ovat tosiaan erilliset tapaukset, niin sinun tulisi testata ne erikseen, nyt lisäilet 'osumia' s.e. molemmat variaatiot ovat mukana. Eli tarkista_osuuko_kuningatar tms suattaisi olla hyvä ajatus. (ruutupaperilla tai excelillä mietit miten kuningatar liikkuu... Yksi suunta +1 molempiin akseleihin, toinen +1, - 1 jne.)
DarryIG avasikin stackoverflowssa noita ongelmia tuossa (mutta ymmärsin, että kaipaat hieman lisää selkokieltä?).
Olettaen, että nuo a ja b ovat tosiaan erilliset tapaukset, niin sinun tulisi testata ne erikseen, nyt lisäilet 'osumia' s.e. molemmat variaatiot ovat mukana. Eli tarkista_osuuko_kuningatar tms suattaisi olla hyvä ajatus. (ruutupaperilla tai excelillä mietit miten kuningatar liikkuu... Yksi suunta +1 molempiin akseleihin, toinen +1, - 1 jne.)
Lisäksi huomio siitä, että voit keksiä paikat ottamalla yhden 64:sta kolumni-rivi-parista ja sitten seuraavan jäljelle jäävistä 63:sta ratkaisee tuon arpomisongelman.
Selkokieltä kaipaisin ja mielellään selkeää koodinpätkääkin. Sen verran aloittelija vielä, että en kovin helposti saa ajatuksia muunnettua koodiksi.
Tavallaan nuo kaksi tapausta (torni & kuningatar) voi nähdä yhtenä tapauksena, koska kuningattaren liikkeet ovat samat kuin tornin, mutta lisäyksenä ristisuunnassa liikkumiset. Eli tavallaan tuon tornin voi tästä ajatusleikistä jättää pois.
Miten tuon kuningattaren liikkeen saisi toteutettua kunnolla? Seinä voi akselilla tulla vastaan heti tai vasta monen ruudun päästä.
Selkokieltä kaipaisin ja mielellään selkeää koodinpätkääkin. Sen verran aloittelija vielä, että en kovin helposti saa ajatuksia muunnettua koodiksi.
Tavallaan nuo kaksi tapausta (torni & kuningatar) voi nähdä yhtenä tapauksena, koska kuningattaren liikkeet ovat samat kuin tornin, mutta lisäyksenä ristisuunnassa liikkumiset. Eli tavallaan tuon tornin voi tästä ajatusleikistä jättää pois.
Miten tuon kuningattaren liikkeen saisi toteutettua kunnolla? Seinä voi akselilla tulla vastaan heti tai vasta monen ruudun päästä.
Tosiaan sille diagonaaliliikkumisellehan ehtona on se, että rivi-indeksien ja kolumni-indeksien erotuksen pitää olla sama. Siitä saat ehdon tuonne if-lausekkeeseesi.
Tosiaan sille diagonaaliliikkumisellehan ehtona on se, että rivi-indeksien ja kolumni-indeksien erotuksen pitää olla sama. Siitä saat ehdon tuonne if-lausekkeeseesi.
En mielelläni paljasta opinahjoa, mutta kuten huomaat on materiaali sekä ikivanhaa että todella huonoa valmentamaan tehtävien ratkaisuun, etenkin tällaista keltanokkaa.
Eli toimisiko tuolle diagonaaliliikkumiselle ao. koodinpätkä?
Koodi:
elif white_column==black_column or white_row==black_row or white_column-black_column==white_row-black_row:
hot=hot+1
#checks if queen can attack
En mielelläni paljasta opinahjoa, mutta kuten huomaat on materiaali sekä ikivanhaa että todella huonoa valmentamaan tehtävien ratkaisuun, etenkin tällaista keltanokkaa.
Eli toimisiko tuolle diagonaaliliikkumiselle ao. koodinpätkä?
Koodi:
elif white_column==black_column or white_row==black_row or white_column-black_column==white_row-black_row:
hot=hot+1
#checks if queen can attack
En mä nyt tiedä onko sillä vanhuudella mitään väliä. Ihan täsmälleen samalla tavalla tuo homma toimii edelleen Python 3 puolellakin. Ja täsmälleen samaa loogista ajattelua tarvii harrastaa sielläkin.
Mutta niin, nythän tuo erotus kattaa vain tapaukset joissa rivi-indeksi ja kolumni-indeksi kasvaa tai pienenee siirryttäessä nappulasta toiseen. Mitenkäs saisit sen ottamaan huomioon tilanteet missä rivi-indeksi kasvaa mutta kolumni-indeksi pienenee, tai toisinpäin?
Käytän yhdessä projektissa Google Sheetsiä tietokantana. Google Sheets -autentikoimista varten mulla on Googlelta saatu .json tiedosto, jossa on kymmenkunta kenttää. Tuota tiedostoa en voi tietenkään pushata GitHubiin muiden nähtäville, mutta tarvitsen tuota GitHubin CI-putkessa ja production serverillä, jonne pushaan GitHubista automaattisesti.
Koitin piilottaa salaiset tiedot ympäristömuuttujiin ja käyttää Javascript-objektia jsonin sijaan, mutta näyttää siltä, että sen pitää nimenomaan olla json. Miten tuota kuuluisi käsitellä?