Датотека:MAZE 30x20 Prim.ogv

Извор: testwiki
Пређи на навигацију Пређи на претрагу
MAZE_30x20_Prim.ogv (величина датотеке: 1,1 MB, MIME тип: application/ogg)

Ова датотека се налази на Викимедијина остава и може да се користи на другим пројектима. Њен опис је приказан испод.

Википедија

 Ово је изабрана слика на Википедија на енглески језик (Featured pictures) and is considered one of the finest images.
 Ово је изабрана слика на Википедија на персијски језик (نگاره‌های برگزیده) and is considered one of the finest images.

Ако мислиш да ова датотека такође треба да буде изабрана на Викимедијиној остави предложи је.
Ако поседујете слику бољег или сличног квалитета коју сте вољни објавити под одговарајућом лиценцом, свакако је пошаљите, прописно означите и предложите je.

Опис

Опис
English: The generation of a maze using a randomized Prim's algorithm. This maze is 30x20 in size.
Датум
Извор Сопствено дело
Аутор Purpy Pupple
Остале верзије
Using depth-first search instead of Prim's algorithm.

Source code

#include <iostream>
#include <queue>
#include <random>
#include <utility>
#include <vector>
#include <cstdio>

using namespace std;

const int xsize = 20;
const int ysize = 30;

int main() {
    random_device rd;
    mt19937 en(rd());
    uniform_real_distribution<double> uni(0,1);

    vector<int> v(xsize*ysize, 0);
    vector<int> w(xsize*ysize*2, 1);
    vector<vector<pair<double, pair<int, int>>>> e(xsize*ysize);

    for(int i=0; i<xsize; i++) {
        for(int j=0; j<ysize; j++) {
            int k = i*ysize + j;
            if(i>0) e[k].push_back(make_pair(uni(en), make_pair(k, (i-1)*ysize + j)));
            if(j>0) e[k].push_back(make_pair(uni(en), make_pair(k, i*ysize + (j-1))));
            if(i<xsize-1) e[k].push_back(make_pair(uni(en), make_pair(k, (i+1)*ysize + j)));
            if(j<ysize-1) e[k].push_back(make_pair(uni(en), make_pair(k, i*ysize + (j+1))));
        }
    }
    priority_queue <pair<double, pair<int, int>>> frontier;
    int x = 0, y = 0;
    v[x*ysize + y] = 1;
    for(auto k : e[0]) {
        frontier.push(k);
    }
    while(!frontier.empty()) {
        auto z = frontier.top();
        frontier.pop();
        int a = z.second.first;
        int b = z.second.second;
        if(v[b]) continue;
        v[b] = 2;
        int aa = min(a,b);
        int bb = max(a,b);
        if(bb-aa == 1) {
            w[2*aa] = 0;
        } else {
            w[2*aa+1] = 0;
        }
        for(auto k : e[b]) {
            if(!v[k.second.second]) {
                frontier.push(k);
            }
        }
        // print the thing lol
        for(int j=0; j<2*ysize+1; j++) {
            cout << "1 ";
        }
        for(int i=0; i<xsize; i++) {
            cout << endl << "1 ";
            for(int j=0; j<ysize; j++) {
                cout << "102"[v[i*ysize + j]] << " " << "01"[w[2*(i*ysize + j)]] << " ";
            }
            cout << endl << "1 ";
            for(int j=0; j<ysize; j++) {
                cout << "01"[w[2*(i*ysize + j)+1]] << " 1 ";
            }
        }
        cout << endl;
        v[b] = 1;
    }
}

Лиценцирање

Ја, носилац ауторских права над овим делом, објављујем исто под следећим лиценцама:
w:sr:Creative Commons
ауторство делити под истим условима
Ова датотека је доступна под лиценцом Creative Commons Ауторство-Делити под истим условима 3.0 Unported.
Дозвољено је:
  • да делите – да умножавате, расподељујете и преносите дело
  • да прерађујете – да прерадите дело
Под следећим условима:
  • ауторство – Морате да дате одговарајуће заслуге, обезбедите везу ка лиценци и назначите да ли су измене направљене. Можете то урадити на било који разуман манир, али не на начин који предлаже да лиценцатор одобрава вас или ваше коришћење.
  • делити под истим условима – Ако измените, преобразите или доградите овај материјал, морате поделити своје доприносе под истом или компатибилном лиценцом као оригинал.
GNU head Дата је дозвола да се копира, дистрибуира и/или мења овај документ под условима ГНУ-ове лиценце за слободну документацију, верзије 1.2 или било које новије верзије коју објави Задужбина за слободни софтвер; без непроменљивих одељака и без текста на насловној и задњој страни. Текст лиценце можете прочитати овде.
Изаберите лиценцу по жељи.

Поднаписи

Укратко шта ова датотека представља/приказује
The generation of a maze using a randomized Prim's algorithm. This maze is 30x20 in size.

Ставке приказане у овој датотеци

приказује

5. фебруар 2011

application/ogg

Историја датотеке

Кликните на датум/време да бисте видели тадашњу верзију датотеке.

Датум/времеДимензијеКорисникКоментар
тренутна23:13, 11. јун 2015. (1,1 MB)wikimediacommons>DlluFixes a bug that caused it to be not actually Prim's algorithm.

Следећа страница користи ову датотеку: