Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
110
Task/Intersecting-number-wheels/D/intersecting-number-wheels.d
Normal file
110
Task/Intersecting-number-wheels/D/intersecting-number-wheels.d
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
import std.exception;
|
||||
import std.range;
|
||||
import std.stdio;
|
||||
|
||||
struct Wheel {
|
||||
private string[] values;
|
||||
private uint index;
|
||||
|
||||
invariant {
|
||||
enforce(index < values.length, "index out of range");
|
||||
}
|
||||
|
||||
this(string[] value...) in {
|
||||
enforce(value.length > 0, "Cannot create a wheel with no elements");
|
||||
} body {
|
||||
values = value;
|
||||
}
|
||||
|
||||
enum empty = false;
|
||||
|
||||
auto front() {
|
||||
return values[index];
|
||||
}
|
||||
|
||||
void popFront() {
|
||||
index = (index + 1) % values.length;
|
||||
}
|
||||
}
|
||||
|
||||
struct NamedWheel {
|
||||
private Wheel[char] wheels;
|
||||
char m;
|
||||
|
||||
this(char c, Wheel w) {
|
||||
add(c, w);
|
||||
m = c;
|
||||
}
|
||||
|
||||
void add(char c, Wheel w) {
|
||||
wheels[c] = w;
|
||||
}
|
||||
|
||||
enum empty = false;
|
||||
|
||||
auto front() {
|
||||
auto v = wheels[m].front;
|
||||
char c = v[0];
|
||||
while ('A' <= c && c <= 'Z') {
|
||||
v = wheels[c].front;
|
||||
c = v[0];
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
void popFront() {
|
||||
auto v = wheels[m].front;
|
||||
wheels[m].popFront;
|
||||
|
||||
char c = v[0];
|
||||
while ('A' <= c && c <= 'Z') {
|
||||
auto d = wheels[c].front;
|
||||
wheels[c].popFront;
|
||||
c = d[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void group1() {
|
||||
auto a = Wheel("1", "2", "3");
|
||||
a.take(20).writeln;
|
||||
}
|
||||
|
||||
void group2() {
|
||||
auto a = Wheel("1", "B", "2");
|
||||
auto b = Wheel("3", "4");
|
||||
|
||||
auto n = NamedWheel('A', a);
|
||||
n.add('B', b);
|
||||
|
||||
n.take(20).writeln;
|
||||
}
|
||||
|
||||
void group3() {
|
||||
auto a = Wheel("1", "D", "D");
|
||||
auto d = Wheel("6", "7", "8");
|
||||
|
||||
auto n = NamedWheel('A', a);
|
||||
n.add('D', d);
|
||||
|
||||
n.take(20).writeln;
|
||||
}
|
||||
|
||||
void group4() {
|
||||
auto a = Wheel("1", "B", "C");
|
||||
auto b = Wheel("3", "4");
|
||||
auto c = Wheel("5", "B");
|
||||
|
||||
auto n = NamedWheel('A', a);
|
||||
n.add('B', b);
|
||||
n.add('C', c);
|
||||
|
||||
n.take(20).writeln;
|
||||
}
|
||||
|
||||
void main() {
|
||||
group1();
|
||||
group2();
|
||||
group3();
|
||||
group4();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue