Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Videoannonse
Annonse
Python: Man kan ikke lagre den sorterte listen direkte i en ny variabel, samt beholde den originale listen?

Jo som @peterbb postet må man bruke sorted().

>>> help(s.sort)
Help on built-in function sort:

sort(...)
   L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
   cmp(x, y) -> -1, 0, 1

sort() gjør "in place" sortering av orginal liste.

Defor vil den retunere "None" viss man lagrer i en variable,fordi ingen ny liste blir lagd.

sorted() må man lagre i in ny variable eller overskrive orginal variable(s) viss det er ønskelig.

>>> s = [3,4,3,2,1,2,5]
>>> l = sorted(s)
>>> l
[1, 2, 2, 3, 3, 4, 5]
>>> s
[3, 4, 3, 2, 1, 2, 5]
>>> 

Lenke til kommentar

Kan nevne at man i Ruby har en konvensjon som sier at "farlige metoder" har navn som slutter på "!". Og mutasjon (dvs. endring av data) er farlig.

 

F.eks. har ruby-strenger en metode som heter strip, og en metode som heter strip!.

 

a = "    hello, world    "
b = a.strip

puts a  #=>  Skriver ut strengen "    hello, world    "
puts b  #=>  Skriver ut strengen "hello, world"

a.strip!
puts a  #=>  Skriver ut strengen "hello, world"

 

Med utropstegn er det enkelt å skille metoder som endrer variabelen selv og metoder som returnerer en ny versjon.

  • Liker 1
Lenke til kommentar

Kan nevne at man i Ruby har en konvensjon som sier at "farlige metoder" har navn som slutter på "!". Og mutasjon (dvs. endring av data) er farlig.

Jeg må innrømme at jeg synes ikke det at en funksjon/metode endre data er farlig. Det som er farlig er å gi funksjoner dårlige navn, Og ikke være konsekvent i hvordan man gjør ting.

Lenke til kommentar

Kan nevne at man i Ruby har en konvensjon som sier at "farlige metoder" har navn som slutter på "!". Og mutasjon (dvs. endring av data) er farlig.

Jeg må innrømme at jeg synes ikke det at en funksjon/metode endre data er farlig. Det som er farlig er å gi funksjoner dårlige navn, Og ikke være konsekvent i hvordan man gjør ting.

 

Det er vel ikke "farlig" sånn generelt sett, men i sammenheng med samtidighet (multi-trådet programmering f.eks.) er dette (mutering av delte data) potensielt veldig "farlig". Ikke så dumt med noen naming conventions da nei -- så det er lett å se/huske hvilke funksjoner som muterer data.

 

..og jeg må innrømme at jeg er litt dårlig på dette selv; jeg legger ikke til ! på enden av navnene på av alle funksjoner som muterer ting; men kanskje spesielt i sammenheng med høynivåfunksjoner hvor problemene allerede er løst på "innsiden" (v.h.a. funksjoner som har ! på enden av seg) uansett. :)

Endret av worseisworser
Lenke til kommentar

Kan nevne at man i Ruby har en konvensjon som sier at "farlige metoder" har navn som slutter på "!". Og mutasjon (dvs. endring av data) er farlig.

Jeg må innrømme at jeg synes ikke det at en funksjon/metode endre data er farlig. Det som er farlig er å gi funksjoner dårlige navn, Og ikke være konsekvent i hvordan man gjør ting.

 

Det er vel ikke "farlig" sånn generelt sett, men i sammenheng med samtidighet (multi-trådet programmering f.eks.) er dette (mutering av delte data) potensielt veldig "farlig".

 

Dette er relatert til prinsippet vi kaller Command Query Separation (CQS), opprinnelig definert av Bertrand Meyer. Det sier at en metode enten skal returnere en verdi eller utføre noe (det vil si endre state eller ha en annen bi-effekt), men ikke begge deler.

 

Sagt på en annen måte: Å stille et spørsmål skal ikke endre svaret!

 

Årsaken er at man lettere skal kunne forutse hva koden gjør, lettere unngå bugs.

 

http://en.wikipedia.org/wiki/Command-query_separation

Lenke til kommentar
  • 2 uker senere...

Har 3 forskjellige varer som skal sorteres ut på 3 forskjellige steder på et transportbånd. Alle varene passerer en fotocelle som gjenkjenner hvem vare som kommer, så skal den automatisk sorteres ut. Har sensorer på de to første stedene de kan sorteres ut, ikke på siste. Har ikke mulighet til å holde igjen andre varer.

 

Altså:

-----Fotocelle--------Uttak1/Sensor Høy---------Uttak2/Sensor Lav---------Uttak3

 

Dreier seg om PLS. Bruker structured text (ligner på pascal) som programmeringsspråk.

 

Noen forslag til logikk for å løse det? Blir jo et problem hvis varene kommer tett etterhverandre.

Kunne jeg brukt arrays på et vis? :hmm:

Lenke til kommentar

Skjønner ikke helt situasjonen din. Men her er et forslag etter ren gjetning om hvordan det henger sammen.

 

Fotocella registerer hvilken vare som kommer og nummererer denne. Ved å holde fortløpende kontroll på hvilke varer som er på båndet og hvor de er kan du aktivere og deaktivere uttakene på de riktige tidspunktene.

 

Siden du kan bruke fotocellen til å finne ut hvilke varer som har passert denne, og rekkefølgen, kan du styre uttakene slik at varene kommer riktig. Når en vare har _passert_ et uttak den ikke skulle i blir den da registrert av neste sensor, og så videre. På den måten kan du vite hvordan fremdriften er på båndet.

 

F.eks, først kommer en vare som skal til uttak tre etterfulgt av en vare som skal til uttak to. Når den første varen passerer sensoren i uttak to, og er nå på vei mot uttak tre blir uttak 2 aktivert, slik at den neste varen blir tatt ut her.

Lenke til kommentar

Dette er relatert til prinsippet vi kaller Command Query Separation (CQS), opprinnelig definert av Bertrand Meyer. Det sier at en metode enten skal returnere en verdi eller utføre noe (det vil si endre state eller ha en annen bi-effekt), men ikke begge deler.

Å, da misforstod jeg. Jeg er enig i at man ennten har en funksjon eller en metode som endrer data - ikke begge deler samtidig.

Lenke til kommentar

Skjønner ikke helt situasjonen din. Men her er et forslag etter ren gjetning om hvordan det henger sammen.

 

Fotocella registerer hvilken vare som kommer og nummererer denne. Ved å holde fortløpende kontroll på hvilke varer som er på båndet og hvor de er kan du aktivere og deaktivere uttakene på de riktige tidspunktene.

 

Siden du kan bruke fotocellen til å finne ut hvilke varer som har passert denne, og rekkefølgen, kan du styre uttakene slik at varene kommer riktig. Når en vare har _passert_ et uttak den ikke skulle i blir den da registrert av neste sensor, og så videre. På den måten kan du vite hvordan fremdriften er på båndet.

 

F.eks, først kommer en vare som skal til uttak tre etterfulgt av en vare som skal til uttak to. Når den første varen passerer sensoren i uttak to, og er nå på vei mot uttak tre blir uttak 2 aktivert, slik at den neste varen blir tatt ut her.

 

Hvis det kommer en vare1 som skal ut på uttak 3, så kommer det en vare2 som skal ut på uttak 1 før vare1 har passert uttak1. Vil ikke det lage problemer?

Lenke til kommentar

Det blir noe sånn da, dette bør vel funke så lenge man bare sender 1 og 1 figur forbi fotocella?

 

IF StartStyring THEN

// Hvilken figur blir oppdaget
IF NOT(Sorter1) AND NOT(Sorter2) AND NOT(Sorter3) THEN
	IF SensorFig1 THEN Sorter1 := TRUE; END_IF;
	IF SensorFig2 THEN Sorter2 := TRUE; END_IF;
	IF SensorFig3 THEN Sorter3 := TRUE; END_IF;
END_IF;

// Styring
IF Sorter1 THEN
	IF FolerBC1 AND FolerTC1 THEN
		StatusC1 := TRUE;
	ELSIF SensorUteC1 THEN
		StatusC1 := FALSE;
		Sorter1 := FALSE;
	END_IF;
END_IF;

IF Sorter2 THEN
	IF FolerBC2 THEN
		StatusC2 := TRUE;
	ELSIF SensorUteC2 THEN
		StatusC2 := FALSE;
		Sorter2 := FALSE;
	END_IF;
END_IF;

IF Sorter3 THEN
	StatusC1 := FALSE;
	StatusC2 := FALSE;
	IF FolerBC2 THEN
		Sorter3 := FALSE;
	END_IF;
END_IF;

// Setter status på uttak
SylC1 := StatusC1;
SylC2 := StatusC2;

END_IF;

Endret av Thomas.
Lenke til kommentar

IF'en kan vel gjøre litt enklere?

 

        
IF NOT(Sorter1 OR Sorter2 OR Sorter3) THEN
   // ...        
END_IF;

 

Er usikker på om det måten å løse det på.

 

Tror jeg ville laget en kø struktur vha av et array.

 

Ja, men problemet er hvordan :hmm: Ikke stort utvalg av funksjoner akkurat. Det vil vel uansett blir et problem hvis varene kommer for tett?

 

Har jo 3 forskjellige type varer. Uttak 3 har ikke noe å si egentlig, det som ikke skal dit blir sortert ut før. Trenger kun kø på uttak1 og 2.

 

Kanskje bit shifting kan være noe?

Endret av Thomas.
Lenke til kommentar

Vet ikke helt om dette er riktig del av forumet, but here goes.

 

Vi har fått en øveeksamen til inf100 på UMB, der det ene spørsmålet lyder som følgende:

 

Hvor mange bytes (én byte pr adresse) kan adresseres ved bruk av 20 bit i en datamaskin?

 

Har fem svaralternativer:

A: 20 bytes

B. 20000 bytes

C: 1024 kB

D: 1MB

E: Ingen av delene

 

Fasit sier at det er C og D som er riktig, men blir ikke det feil?

 

Edit: Var visstnok riktig, noen som har lyst til å forklare hvordan man kommer fram til det? :hmm:

Endret av Hotel Papa Echo
Lenke til kommentar
  • 2 uker senere...

Noen som har forslag på gode verktøy for å dokumentere arkitektur og design, planlegger ett program og vil gjerne ha god dokumentasjon om jeg velger å få inn andre med på prosjektet.

Altså ett designdokument med mockups og diagrammer (UML), use cases, samt tekst med forklaringer.

Lenke til kommentar

Noen som har forslag på gode verktøy for å dokumentere arkitektur og design, planlegger ett program og vil gjerne ha god dokumentasjon om jeg velger å få inn andre med på prosjektet.

Altså ett designdokument med mockups og diagrammer (UML), use cases, samt tekst med forklaringer.

Har issues / ting jeg ikke liker med alle slike verktøy jeg har forsøkt. Ender som regel opp med å bruke et tegneprogram som InkScape (vektor-grafikk er bra til å lage diagrammer du kanskje må endre på over tid), kominert med tekstdokument av en eller annen form:

 

  • Google docs er fint for levende dokumenter som skal deles
  • HTML-filer fungerer over alt, og lar deg eksperimentere med formen
  • Av og til skriver jeg i MarkDown-format, og genererer HTML og eventuelt andre formater ut fra dette

 

Er du hard core og glad i rene tekstfiler kan ASCII-diagrammer også fungere :) Det finnes diverse online verktøy for å generere diagrammer basert på metadata.

 

Det finnes også diverse tools for mockups. Balsamiq er et jeg har grei erfaring med. Expression Blend (eller var det et av de andre Expression-produktene?) har også mockup-funksjonalitet.

 

Så jeg beklager, men jeg har ikke funnet et godt verktøy laget for det du beskriver. Visio f.eks. suger, og er ikke gøy å jobbe med. Det finnes tyngre og dyrere løsninger, men er helt sikker på at jeg ikke vil like dem heller :D

Endret av torbjørn marø
Lenke til kommentar

Kjøpte meg en galaxy note nå til jul og har såvidt startet med android SDK. Jeg er helt tussete imponert over hvor enkelt det er å sitte opp et grensesnitt. Og videre hvor enkelt det er å kjøre alle eksemplene på noten. Bare trykke kjør i eclipse også starter programmet på noten.

 

Er det noen her som har noen apps på android market?

Lenke til kommentar

Er det noen her som har noen apps på android market?

 

Jeg publiserte nettopp denne :

https://market.android.com/details?id=no.opentech.shoppinglist&hl=no

 

Kildekode her:

https://github.com/sokkalf/ShoppingList

 

Finnes jo titusenvis av sånne handlelister, men jeg bare plukket ut noe å lage for å lære meg litt androidprogrammering, samtidig som jeg frisker opp javakunnskapene en smule. :)

 

Edit: Bruker forøvrig IntelliJ IDEA som IDE, har aldri blitt helt venn med Eclipse, men stortrives i IntelliJ.

Endret av Sokkalf™
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...