import std.stdio;
pure Type[] Reversed(Type)(const lazy Type[] Source)
{
if (Source.length <= 1) return Source;
else
{
return Source[$-1] ~ Reversed(Source[0..$-1]);
}
}
pure Type[] Sort(Type)(const lazy Type[] Source)
{
if (Source.length <= 1) return Source;
else
{
const Type Pivot = Source[0];
Type[] Greater;
Type[] Lesser;
for (Element; Source[1..$])
{
if (Element > Pivot) Greater ~= Element;
else Lesser ~= Element;
}
return Sort(Lesser) ~ Pivot ~ Sort(Greater);
}
}
void main()
{
writeln(Reversed("Hello, world!"));
writeln(Sort("abidjfoakladfbdadfg9"));
}
aW1wb3J0IHN0ZC5zdGRpbzsKIApwdXJlIFR5cGVbXSBSZXZlcnNlZChUeXBlKShjb25zdCBsYXp5IFR5cGVbXSBTb3VyY2UpCnsKICAgICAgICBpZiAoU291cmNlLmxlbmd0aCA8PSAxKSByZXR1cm4gU291cmNlOwogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gU291cmNlWyQtMV0gfiBSZXZlcnNlZChTb3VyY2VbMC4uJC0xXSk7CiAgICAgICAgfQp9CiAKcHVyZSBUeXBlW10gU29ydChUeXBlKShjb25zdCBsYXp5IFR5cGVbXSBTb3VyY2UpCnsKICAgICAgICBpZiAoU291cmNlLmxlbmd0aCA8PSAxKSByZXR1cm4gU291cmNlOwogICAgICAgIAogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgICAgICBjb25zdCBUeXBlIFBpdm90ID0gU291cmNlWzBdOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBUeXBlW10gR3JlYXRlcjsKICAgICAgICAgICAgICAgIFR5cGVbXSBMZXNzZXI7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAoRWxlbWVudDsgU291cmNlWzEuLiRdKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoRWxlbWVudCA+IFBpdm90KSBHcmVhdGVyIH49IEVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTGVzc2VyIH49IEVsZW1lbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHJldHVybiBTb3J0KExlc3NlcikgfiBQaXZvdCB+IFNvcnQoR3JlYXRlcik7CiAgICAgICAgfQp9CiAKdm9pZCBtYWluKCkKewogICAgICAgIHdyaXRlbG4oUmV2ZXJzZWQoIkhlbGxvLCB3b3JsZCEiKSk7CiAgICAgICAgd3JpdGVsbihTb3J0KCJhYmlkamZvYWtsYWRmYmRhZGZnOSIpKTsKfQ==