Avatar billede juks Novice
27. juli 2012 - 09:48 Der er 28 kommentarer og
1 løsning

Samle i rækkefølge en LIst af tekst strenge

Hej
Jeg har en List indeholde int,int og jeg skal havde samlet disse i rækkefølge dvs jeg kigger på første index der er 3,4 og derefter springer jeg 1,2 over da de ikke kan kombineres med 3,4 så skal jeg kombinere så kan jeg se at 2,4 kan kombineres og således det bliver 3,4,2 også videre men hvordan gør jeg det nemmest , håber der er nogle der kan hjælpe mig. og det giver mening det jeg har skrevet
intput
3,4
1,2
2,4
1,3
1,4
4,5
2,5
2,3
3,5
1,5

output skal give
3,4,2,5,1
Avatar billede Syska Mester
27. juli 2012 - 10:13 #1
Hvad er logikken i det?

Er det et 2D map?
Avatar billede juks Novice
27. juli 2012 - 10:22 #2
ja det kan man vel godt kalde det...

Det er i alt 5 punkter der skal besøges udfra den prioriteret liste der er (hvor 3,4 Skal besøges først) og der efter den næste der kan forbindes med punkt 4

3,4
1,2
2,4
1,3
1,4
4,5
2,5
2,3
3,5
1,5
Avatar billede Syska Mester
27. juli 2012 - 10:37 #3
Kan du ikke lave en liste mere hvad for nogle der skal rammes, synes ikke det giver logik hvis det er et 2D map.

3,4 <- Hit
1,2
2,4 <- Hit
1,3
1,4 <- Hit
4,5
2,5
2,3
3,5
1,5 <- Hit

Jeg kan ikke lige se logikken i dit output vursus input.
Avatar billede juks Novice
27. juli 2012 - 10:48 #4
3,4 <- Hit1
1,2
2,4 <- Hit2
1,3
1,4
4,5
2,5<- Hit3
2,3
3,5
1,5 <- Hit 4

Hit 1 giver 3-4
Hit 2 giver 3-4-2(punktet er 2,4 men hvis vi vender det 4,2 kan det sættes på )
Hit 3 giver 3-4-2-5(punktet er 2,5 og 5 kan sættes på )
Hit 4 giver 3-4-2-5-1 (punktet er 1,5 og vendes til 5,1 og 1 sættes på )


Giver det mere mening
Avatar billede juks Novice
27. juli 2012 - 10:55 #5
det er en lister hvor jeg har beregnet at det bedst kan betale sig at besøge de punkter i den rækkefølge,de er beregnet udfra en matrix af afstande mellem  punkterne giver det mere mening
Avatar billede Syska Mester
27. juli 2012 - 10:57 #6
Hvad er så logikken om de passer sammen?

Det lader ikke til at det er et 2D map nemlig, hvis man bare kan vende ting for at få dem til at passe. :-)
Avatar billede Syska Mester
27. juli 2012 - 11:04 #7
Men hvad er logikken i at 3,4 passer med 2,4 ?

I et 2D Map ligger de ved siden af hinanden, men hvis du vender den ... så er det 4,2 ... og den ligger ikke ved siden af.
Avatar billede juks Novice
27. juli 2012 - 11:07 #8
hmm .. jeg ved ikke helt hvad jeg skal svare :-)
Avatar billede juks Novice
27. juli 2012 - 11:13 #9
Det jeg ved at jeg har beregnet at det bedst kan svare sig at køre ruten 3-4 og derefter rute 2-4 men da jeg er i punkt 4 køre jeg direkte til punkt 2
Avatar billede juks Novice
27. juli 2012 - 11:16 #10
Hvis du kigger på denne her
http://pure.au.dk/portal-asb-student/files/36025757/Bilag_E_SAVINGSNOTE.pdf


på side 5 kan det måske give en ide om hvad jeg prøver
Avatar billede Syska Mester
27. juli 2012 - 11:57 #11
Ja, jo ... men efter at have læst det så er der lidt mere information om capacity/demand der også skal med regnes for at finde ud af om en route er valid eller den skal spinges over.

Så jeg må desværre trække mig tilbage her.

mvh
Avatar billede juks Novice
27. juli 2012 - 12:01 #12
ja men hvis man kan få lavet løkken der gennerer forbindelserne først hvor man ser bort fra demand , ville det være en kæmpe hjælp
Avatar billede juks Novice
27. juli 2012 - 12:16 #13
Det jeg lidt tænkte var at man lagde ruten ind i en streng og så søgte på om den sidste værdi i strengen var = et af tallne i næste punkt også lagde det til strengen ?
Avatar billede Syska Mester
27. juli 2012 - 12:29 #14
Ja, rimelig nemt, men jeg kan stadig ikke helt gennemskue hvorfor der er hit mellem "Hit 3" og "Hit 4" ... når der ikke er hit mellem "2,4" og "1,4".

mvh
Avatar billede Syska Mester
27. juli 2012 - 12:32 #15
Tror jeg har fattet lidt mere af det nu ... giv mig lige lidt tid.
Avatar billede juks Novice
27. juli 2012 - 12:35 #16
hey buzz ,
Det er er der altså hit mellem de 2 ..
men efter hit2 er "står" vi jo ikke længere i 4 da ruten derefter hedder  3-4-2 derfor kigger på næste "punkt" hvor punkt 2 indgår ..

Giver det mere mening ? (er lidt svært at forklare) da jeg selv har lidt svært ved at forstå det :-)
Avatar billede juks Novice
27. juli 2012 - 12:36 #17
PRøv at se denne her igen ..

Hit 1 giver 3-4
Hit 2 giver 3-4-2(punktet er 2,4 men hvis vi vender det 4,2 kan det sættes på )
Hit 3 giver 3-4-2-5(punktet er 2,5 og 5 kan sættes på )
Hit 4 giver 3-4-2-5-1 (punktet er 1,5 og vendes til 5,1 og 1 sættes på )
Avatar billede Syska Mester
27. juli 2012 - 12:52 #18
Tror du manglede at sige at et nummer ikke måtte være der 2 gange. Men du bør selv lave dine lektier. :-)

var list = new List<Tuple<int, int>>();
        list.Add(new Tuple<int, int>(1,2));
        list.Add(new Tuple<int, int>(2,4));
        list.Add(new Tuple<int, int>(1,3));
        list.Add(new Tuple<int, int>(1,4));
        list.Add(new Tuple<int, int>(4,5));
        list.Add(new Tuple<int, int>(2,5));
        list.Add(new Tuple<int, int>(2,3));
        list.Add(new Tuple<int, int>(3,5));
        list.Add(new Tuple<int, int>(1,5));


        var matches = new List<int>();
        matches.Add(3);
        matches.Add(4);



        foreach (var tuple in list)
        {
            var last = matches.Last();

            if (last == tuple.Item1 && !matches.Contains(tuple.Item2))
            {
                matches.Add(tuple.Item2);
            }else if(last == tuple.Item2 && !matches.Contains(tuple.Item1))
            {
                matches.Add(tuple.Item1);
            }
        }

        foreach (var tuple in matches)
        {
            Console.WriteLine(tuple);
        }
Avatar billede juks Novice
27. juli 2012 - 12:58 #19
Takker... og undskyld
jeg prøver jo at lave min lektier men er jo bare en simpel HA studerende der har kastet mig ud i et (for mig) stort C# projekt :-)
Avatar billede juks Novice
27. juli 2012 - 13:02 #20
er villig til at give mit højre ben for at kunne det du kan :-)eller 2000 :-)
Avatar billede Syska Mester
27. juli 2012 - 13:20 #21
*heheh*

Ahhh, så er det okay. Jeg tænkte mere hvis du læste datalogi, datamatikker eller it ingeniør. Så havde jeg lidt mere mod at lave dine lektier :-)

Dette er helt fint ... man kan jo ikke finde ud af alt i hele verden.
Avatar billede juks Novice
27. juli 2012 - 13:29 #22
havde overvejet at leje en "inder" online da selve programmeringen ikke er det primære
Avatar billede Syska Mester
27. juli 2012 - 14:00 #23
Hahah :-)

og et svar.
Avatar billede juks Novice
27. juli 2012 - 14:01 #24
Er det muligt at slette i listen tubles.
Avatar billede Syska Mester
27. juli 2012 - 14:10 #25
Kommer an på hvad du mener med slette?
Avatar billede juks Novice
27. juli 2012 - 14:16 #26
Jeg mener at slette den tuble vi "står i " når adder til matches

matches.Add(tuple.Item2);
Avatar billede juks Novice
27. juli 2012 - 14:17 #27
Er det så nok at ændre den til en
for løkke
også
sige tuple[].remove

?
Avatar billede Syska Mester
27. juli 2012 - 14:47 #28
1. Du må ikke redigere en list mens den gennemløbes ... giver exception. Unhandled Exception: System.InvalidOperationException: Collection was modified;
enumeration operation may not execute.

2. Der findes løsninger.

var list = new List<Tuple<int, int>>();
        list.Add(new Tuple<int, int>(1,2));
        list.Add(new Tuple<int, int>(2,4));
        list.Add(new Tuple<int, int>(1,3));
        list.Add(new Tuple<int, int>(1,4));
        list.Add(new Tuple<int, int>(4,5));
        list.Add(new Tuple<int, int>(2,5));
        list.Add(new Tuple<int, int>(2,3));
        list.Add(new Tuple<int, int>(3,5));
        list.Add(new Tuple<int, int>(1,5));

        var matches = new List<int>();
        matches.Add(3);
        matches.Add(4);

        var itemsToRemove = new List<Tuple<int, int>>();

        foreach (var tuple in list)
        {
            var last = matches.Last();

            if (last == tuple.Item1 && !matches.Contains(tuple.Item2))
            {
                matches.Add(tuple.Item2);
                itemsToRemove.Add(tuple);
            }else if(last == tuple.Item2 && !matches.Contains(tuple.Item1))
            {
                matches.Add(tuple.Item1);
                itemsToRemove.Add(tuple);
            }
        }

        itemsToRemove.ForEach(x => list.Remove(x));

        foreach (var tuple in matches)
        {
            Console.WriteLine(tuple);
        }
Avatar billede juks Novice
27. juli 2012 - 14:52 #29
ok tusind tak endnu engang
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester