Permutacije

već prije sam na tutorijali.net (
http://tutorijali.net/forum/permutacije-t-1349.html
) napravio skriptu, ali u ASP.NETu,
pokušavam prebaciti sad ovo u php
ali mi neide :smiley: negdje sam zapeo, a php i debugiranje=0 bodova…
ovo je kod u ASP.NETu

using System.Web;
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
namespace test
{
  
    public class test : IHttpHandler
    {
        int min = 4; //koliko od
        int max = 6; //koliko 4/6
        int index = 0;
        int pozicija = 0;
        Boolean PromjenaPozicije = false;
        List<List<int>> polje = new List<List<int>>();
        public void ProcessRequest(HttpContext context)
        {
            pozicija = min - 1;
            NapraviPrviRed();
            index++;
            while (true)
            {
                KopirajZadnjiRed();
                if (polje[index][pozicija] < max - (min - (pozicija + 1)))
                {
                    polje[index][pozicija]++;
                    if (PromjenaPozicije)
                    {
                        posloži();
                        PostaviPoziciju();
                        PromjenaPozicije = false;
                    }
                }
                else
                {
                    if (pozicija > 0)
                    {
                        pozicija--;
                        polje[index][pozicija]++;
                        posloži();
                        PostaviPoziciju();
                    }
                    else
                    //to je to ispis i brisanje zadnjeg reda jer na početku odmah kopiram predzadnji red u zadnji...
   
                    {
                        polje.RemoveAt(polje.Count-1);
                        for (int i = 0; i < polje.Count; i++)
                        {
                            context.Response.Write(i.ToString() + " -> ");
                            for (int j = 0; j < polje[i].Count; j++)
                            {
                                context.Response.Write(polje[i][j].ToString());
                            }
                            context.Response.Write("
");
                        }
                        return;
                    }
                }

                index++;
              
            }
        }

        private void NapraviPrviRed()
        {
            polje.Add(new List<int>(min));
            for (int i = 1; i <= min; i++)
                polje[0].Add(i);
        }
        private void KopirajZadnjiRed()
        {
            polje.Add(new List<int>(min));
            for (int i = 0; i < min; i++)
                polje[index].Add(polje[index-1][i]);
        }
        private void posloži()
        {
            if (pozicija == min - 1)
                return; //zadnja brojka nemam što slagati
            for (int i = pozicija + 1; i < min; i++)
                polje[index][i] = polje[index][i - 1] + 1;
        }
        private void PostaviPoziciju()
        {
            int startnaPozicija = pozicija;
            pozicija = min - 1;
            while (true)
            {
                //zadnja brojka mora biti jednaka maximumu, predzadnja max-1 itd...
                if ((pozicija>0)&&(polje[index][pozicija] >= max - (min - (pozicija + 1))))
                    pozicija--;
                else
                {
                    if (startnaPozicija != pozicija) 
                        PromjenaPozicije = true;
                    return;
                }
              
            }
              
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

ovo sam ja prebacio u php, međutim negdje mi preskače, e sad ja najviše sumnjam na pogrešnu poziciju, ali ne mogu biti siguran :slight_smile: uglavnom evo php-a

http://www.php.net/manual/en/function.shuffle.php#90615

Moze se tako nesto i gotovo naci …

ne, nije to to, on ispisuje sve moguće kombinacije
123
231
132 itd…
a ja trebam
ako je 4/6 npr
1234
1235
1236
1245
1246
1256
1345
1346
1356
1456
2345
2346
2356
2456
3456

:slight_smile:

kao kladionički listić :wink:
a recimo 2/3 bi onda bilo
12
13
23

Dvije zagrade si samo fulao u prepisivanju…

Prije ovoga ti treba zagrada {

I obriši jednu poslije

pa ovo ti je cista logika nema veze sa php ili asp.net, samo malo provjeri kod, sigurno ima negdje greska…

e, to :slight_smile: Hvala, ma ne volim php iz razloga jer nema kvalitetni debugger (ili ja ne znam za njega), malo sam se mučio provjeravao, ali nije mi se dalo ići gledat logiku od početka (ovo u ASP.NETu sam ionako napravio pred par mjeseci pa nisam imao volje ići od početka), i mislio sam da je zagrada ili neka takva glupost u pitanju, ali kao što sam reko debug u php-a je 0 bodova :slight_smile:
Inače savjet je da ako nešt jednostavno ne možeš složit iz nekoliko pokušaja daj nekome od kolega da pogleda kod i stvar je riješena u roku odmah :slight_smile: ista stvar važi i obrnuto

potpisujem :smiley:


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja