// BogoSort.cpp : アプリケーションのエントリ ポイントを定義します。
//
#include <iostream>
#include <random>
#include <algorithm>
#include <vector>
typedef std::vector<int> DType;
DType MakeVector(std::size_t N) {
DType R;
for (std::size_t i = 0; i < N; i++)R.push_back(i);
return R;
}
template<class Iter,class RE>
bool BogoSort(Iter F, Iter E, RE& r) {
while (!std::is_sorted(F,E))std::shuffle(F, E, r);
return true;
}
bool Show(const DType& v) {
for (auto&o : v) {
std::cout << o << ',';
}
std::cout << std::endl;
return true;
}
int main()
{
DType v=MakeVector(9);
std::random_device rd;
std::mt19937 mt;
std::shuffle(v.begin(), v.end(), mt);
Show(v);
BogoSort(v.begin(), v.end(),mt);
Show(v);
return 0;
}
Ly8gQm9nb1NvcnQuY3BwIDog44Ki44OX44Oq44Kx44O844K344On44Oz44Gu44Ko44Oz44OI44OqIOODneOCpOODs+ODiOOCkuWumue+qeOBl+OBvuOBmeOAggovLwojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxyYW5kb20+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp0eXBlZGVmIHN0ZDo6dmVjdG9yPGludD4gRFR5cGU7CgpEVHlwZSBNYWtlVmVjdG9yKHN0ZDo6c2l6ZV90IE4pIHsKCURUeXBlIFI7Cglmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgTjsgaSsrKVIucHVzaF9iYWNrKGkpOwoJcmV0dXJuIFI7Cn0KdGVtcGxhdGU8Y2xhc3MgSXRlcixjbGFzcyBSRT4KYm9vbCBCb2dvU29ydChJdGVyIEYsIEl0ZXIgRSwgUkUmIHIpIHsKCXdoaWxlICghc3RkOjppc19zb3J0ZWQoRixFKSlzdGQ6OnNodWZmbGUoRiwgRSwgcik7CgoJcmV0dXJuIHRydWU7Cn0KCmJvb2wgU2hvdyhjb25zdCBEVHlwZSYgdikgewoJZm9yIChhdXRvJm8gOiB2KSB7CgkJc3RkOjpjb3V0IDw8IG8gPDwgJywnOwoJfQoJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCXJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpCnsKCURUeXBlIHY9TWFrZVZlY3Rvcig5KTsKCXN0ZDo6cmFuZG9tX2RldmljZSByZDsKCXN0ZDo6bXQxOTkzNyBtdDsKCglzdGQ6OnNodWZmbGUodi5iZWdpbigpLCB2LmVuZCgpLCBtdCk7CglTaG93KHYpOwoJQm9nb1NvcnQodi5iZWdpbigpLCB2LmVuZCgpLG10KTsKCVNob3codik7CiAgICByZXR1cm4gMDsKfQoK
5,8,0,3,4,2,6,7,1,
0,1,2,3,4,5,6,7,8,