Näytä kirjoitukset

Tässä osiossa voit tarkastella kaikkia tämän jäsenen viestejä. Huomaa, että näet viestit vain niiltä alueilta, joihin sinulla on pääsy.


Viestit - UnelmaIkuisestaOnnesta

Sivuja: [1]
1
Minulla on sinulle arvoitus.

Miten alla oleva pseudokoodi tuottaa oikean vastauksen?

Mietin sitä täällä itse. Tuo tehtävä oli kiehtova, mutta se ylitti omat kykyni, joten kysyin lopulta neuvoa tekoälyltä ja sain vastaukseksi toimivan Python koodin. Muutin sen ensin kommentoiduksi ja sitten pseudokoodiksi ja olen nyt tuijottanut sitä miettien syntyjä syviä.

Koodia: [Valitse]
ALIOHJELMA KOMBINAATIOT(A [], LKM):
    JOS LKM > A.PITUUS:
        PALAUTA TYHJÄLISTA
    JOS LKM == 0:
        PALAUTA LISTA JONKA SISÄLLÄ ON TYHJÄ LISTA
    KOMBINAATIOT = TYHJÄLISTA
    KÄY LÄPI i:n ARVOT NOLLASTA A:n PITUUTEEN -1 ASTI
    A1 = A.OTA_LISTALTA_i_ENSIMMÄISTÄ_ALKIOTA_UUDEKSI_LISTAKSI()
    LKM1 = LKM - 1
    OSAKOMBINAATIOT = KOMBINAATIOT(A1, LKM1)
    KÄY LÄPI OSAKOMBINAATIOT JOS SE EI OLE TYHJÄ LISTA
            OSAKOMBINAATIO.LISÄÄ_LISTALLE(A[i])
    KOMBINAATIOT.LISÄÄ_LISTALLE(OSAKOMBINAATIO)
    PALAUTA KOMBINAATIOT

Sama Python koodina.

Koodia: [Valitse]
"""
    Kombinaatioita listasta luova aliohjelma.
   
    koko: Kuinka monta alkiota kombinaatiossa on.
    lista: Mistä listasta luodaan kombinaatiot.

    Aliohjelma on rekursiivinen, eli se kutsuu itse itseään.
"""

def kombinaatiot(lista, koko):
    if koko > len(lista): # 1.
        return []
    if koko == 0: # 2.
        return [[]]
    kombinaatiolista = []
    for i in range(0, len(lista)):
        # Jokaisella rekursiokerralla listalta jää aina pois
        # sen viimeinen alkio, jota ei käsitellä lainkaan.
        # Lisäksi kombinaatioiden alkioiden määrä vähenee yhdellä.
        for kombinaatio in kombinaatiot(lista[:i], koko-1):
            # Rekursiivinen funktiokutsu toimii näin. Muuttujien arvot
            # ovat tässä tämän suorituskerran arvoja, eivät kutsulle
            # annettuja arvoja.
            #   1. Jos i < koko, tätä ei suoriteta
            #   2. Koolla 1 kombinaatiolistalla on alkiona pelkkä lista[i]
            #   3. Koolla >1 yhtä pienemmän koon listaan lisätään alkioksi lista[i]
            kombinaatiolista.append(kombinaatio + [lista[i]])
    return kombinaatiolista # 3.

lista = ['a','b','c','d','e','f']
kombinaationkoko = 5
print("Ohjelma laskee", kombinaationkoko, "alkioiset kombinaatiot listalle", lista)
print("VASTAUS")
for kombinaatio in sorted(kombinaatiot(lista, kombinaationkoko)):
print(kombinaatio)

PSST.

Tuossa sinun kirjoittamassasi pseudokoodissa on jotain hämärää. Vääntelin sitä miten päin tahansa, niin aina kun sen yrittää muuttaa oikeaksi koodiksi, se joko jumittuu ikuiseen silmukkaan tai sitten ei tulosta mitään, tai sitten tulostaa vain kaikki taulukon alkiot. Silti tuossa toimivassa pseudokoodissa on jotain samantapaista ideaa.

Ehkä sitä tehtävää voisi helpottaa niin, että aluksi kokeilee luoda listan kaikista mahdollisista listan alkioiden yhdistelmistä ja sen jälkeen alkaa karsia niitä vaihtoehtoja. Siinä ei kyllä voi käyttää tavallista silmukkaa, koska se vaatisi sisäkkäisiä silmukoita niin monta kuin loppuvastauksessa on lukuja.

Koodia: [Valitse]
def kaikkimahdollisetkolmenyhdistelmät(LISTA):
    for merkki in LISTA:
        for merkki2 in LISTA:
            for merkki3 in LISTA:
                print([merkki, merkki2, merkki3])
               
kaikkimahdollisetkolmenyhdistelmät("ABCDEFG")

Miten sinä yleistäisit tuon niin, että sisäkkäisten silmukoiden määrän voisi valita?

2
Tässä yksi toteutus: https://github.com/TheR1D/shell_gpt

Siinäpä mielenkiintoinen linkki! Tuon Shell_GPT:n esittelyvideolla näkyy jännittävä ennakkonäytös siitä, millaista komentorivillä työskentely tulee tulevaisuudessa olemaan. OpenAI:n API-avaimen hinnoittelukin näyttäisi ihan kohtuulliselta.

https://openai.com/pricing

Odotan, että jossain vaiheessa tulisi omalla koneella suoritettava tekoäly, jonka voisi asentaa suoraan pakettivarastosta.

Yritin pitkään saada joitain avoimempia omalla koneella toimivia malleja (LLaMA ja Alpaca) toimimaan, mutta se ei ollut kovin helppoa ja kun lopulta onnistuin Alpacan kanssa, niin suomenkielisiin kysymyksiin vastaukset olivat siansaksaa. ChatGPT on koulutettu paljon useammilla kielillä kuin nykyiset avoimen lähdekoodin tekoälyt.

3
Se millaisena seuraava sukupolvi tulee näkemään tietokoneet on hyvin erilainen kuin meidän maailmamme, jossa tietokoneet ovat aina hyvin tyhmiä ja niitä pitää käskyttää monimutkaisilla yksityiskohtaisilla käskyillä katsellen komentorivi-ikkunaa, joka tottelee vain tiettyjä ulkoa opeteltavia taikasanoja.

Olin aluksi hyvin epäileväinen ChatGPT:n kyvyistä ohjelmoida, kunnes kokeilin sitä. Oletteko te kokeilleet sitä? https://chat.openai.com Paitsi, että se osaa esimerkiksi neuvoa, että mitkä Linuxin ytimen ominaisuudet on toteutettu missäkin lähdekooditiedostossa, niin sen koodauskyvytkin ovat ihan kelvolliset.

Näytän tässä esimerkin, millaista koodia ChatGPT tuottaa. En ole kokeillut sen toimivuutta, koska en osaa koodata RUST kielellä, mutta funktiokutsut ja vaiheet näyttäisivät melko loogisilta samoin kuin kielioppi. En usko, että sitä joutuu muuttamaan ainakaan paljoa, jotta se täyttäisi tehtävänannon.

Keskusteluni ChatGPT:n kanssa, jonka loin tätä viestiketjua varten meni näin:

User
Kirjoita minulle RUST kielinen ohjelma, joka laskee Fibonaccin lukuja ja lähettää vastaukset internet osoitteeseen "linux.fi" käyttäen UDP protokollaa.

ChatGPT
Tässä on yksinkertainen RUST-kielinen ohjelma, joka laskee Fibonaccin lukuja ja lähettää vastaukset UDP-protokollalla "linux.fi" -osoitteeseen:


Koodia: [Valitse]
use std::net::{UdpSocket, SocketAddr};

fn main() {
    // Luo UDP-socket
    let socket = UdpSocket::bind("0.0.0.0:0").expect("Failed to create socket");
    socket.set_broadcast(true).expect("Failed to set socket broadcast");

    // Määrittele vastaanottajan tiedot
    let addr: SocketAddr = "linux.fi:12345".parse().expect("Invalid socket address");

    // Laske ja lähetä Fibonaccin luvut
    let n = 10;  // Haluttu lukujen määrä
    let mut fib_nums: Vec<u64> = vec![0, 1];
   
    for i in 2..n {
        let next_num = fib_nums[i-1] + fib_nums[i-2];
        fib_nums.push(next_num);

        let message = next_num.to_string().into_bytes();
        socket.send_to(&message, addr).expect("Failed to send message");
        println!("Sent: {}", next_num);
    }

    // Sulje socket
    drop(socket);
}

Tässä ohjelmassa käytetään std::net::UdpSocket -kirjastoa UDP-yhteyden luomiseen ja tiedon lähettämiseen. Ohjelma laskee Fibonaccin luvut halutun määrän (n) ja lähettää jokaisen luvun erikseen UDP-paketteina "linux.fi" -osoitteeseen porttiin 12345. Voit muuttaa n -arvoa haluamasi lukumäärän mukaan.

Muista, että tämä koodi lähettää tietoa "linux.fi" -osoitteeseen porttiin 12345, joten varmista, että kyseinen osoite on olemassa ja vastaanottaa UDP-paketteja.


– THE END –

Vaikka tietokoneet yhä säilyvät hyvin tyhminä sen kannalta, joka haluaa oikeasti ymmärtää, että miten ne toimivat, niin myös monimutkaisten taitojen oppimisesta tulee tekoälyn ansiosta paljon helpompaa ja uusi käyttöliittymä mahdollistaa sumeat ja epätarkat käskyt, joissa on vähemmän opeteltavaa, sekä lähdekoodin automaattisen tuottamisen pyynnöstä.

Esimerkiksi olen melko varma, että jossain vaiheessa joku liittää keskustelevan tekoälyn Linuxin komentoriviin niin, että tietoja voi hakea tietoa paljon manuaalisivuja helpommin ja laajemmin.

Luulen myös, että ChatGPT:llä voi olla kirjoitustaitoa edistävä vaikutus, koska se kirjoittaa pitkiä kirjakielisiä viestejä. Useimmilla suomalaisilla ei ole ketään kenen kanssa kirjoitella sellaisia viestejä ja sellaisten kirjoittaminen muille tarkoittaisi nopeaa välirikkoa vastaanottajien stressaantuessa.

Minulla epäilys on vaihtunut jo jännitykseksi tajuttuani, että voin viimein oppia tekoälyn avulla kaikki ne asiat, jotka ovat ennen olleet minulle liian vaikeita siksi, että ne edellyttävät tietoja, joita on vaikea löytää edes hakukoneilla. Esimerkiksi jos haluaisin koodata jonkun minulle vieraan algoritmin tai käyttää minulle outoa ohjelmointikieltä, niin ChatGPT:n tuottama koodi ja neuvot lyhentäisivät projektin aikaa valtavasti.

Sivuja: [1]