using System;
using System.Collections ;
using System.Collections .Generic ;
using System.Linq ;
public class RingBuffer< T> : IEnumerable, IEnumerable< T> {
public RingBuffer( int size) {
elements = new T[ size] ;
end = 0 ;
}
public void Add( T element) {
elements[ end] = element;
++ end;
if ( end == elements.Length ) {
end = 0 ;
}
}
IEnumerator IEnumerable.GetEnumerator ( ) {
return this.GetEnumerator ( ) ;
}
public IEnumerator< T> GetEnumerator( ) {
for ( var i = ( end == elements.Length - 1 ? 0 : end + 1 ) ; i != end; ) {
yield return elements[ i] ;
if ( i == elements.Length - 1 ) {
i = 0 ;
} else {
++ i;
}
}
}
private T[ ] elements;
private int end;
}
public static class Program {
public static void Main( ) {
var buffer = new RingBuffer< int> ( 10 ) ;
for ( var i = 0 ; i < 100 ; ++ i) {
buffer.Add ( i) ;
Console.WriteLine ( string.Join ( ", " , buffer) ) ;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBSaW5nQnVmZmVyPFQ+IDogSUVudW1lcmFibGUsIElFbnVtZXJhYmxlPFQ+IHsKICAgICAgICBwdWJsaWMgUmluZ0J1ZmZlcihpbnQgc2l6ZSkgewogICAgICAgICAgICAgICAgZWxlbWVudHMgPSBuZXcgVFtzaXplXTsKICAgICAgICAgICAgICAgIGVuZCA9IDA7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgdm9pZCBBZGQoVCBlbGVtZW50KSB7CiAgICAgICAgICAgICAgICBlbGVtZW50c1tlbmRdID0gZWxlbWVudDsKICAgICAgICAgICAgICAgICsrZW5kOwogICAgICAgICAgICAgICAgaWYgKGVuZCA9PSBlbGVtZW50cy5MZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIElFbnVtZXJhdG9yIElFbnVtZXJhYmxlLkdldEVudW1lcmF0b3IoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5HZXRFbnVtZXJhdG9yKCk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgSUVudW1lcmF0b3I8VD4gR2V0RW51bWVyYXRvcigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAoZW5kID09IGVsZW1lbnRzLkxlbmd0aCAtIDEgPyAwIDogZW5kICsgMSk7IGkgIT0gZW5kOykgewogICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCByZXR1cm4gZWxlbWVudHNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGVsZW1lbnRzLkxlbmd0aCAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2k7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHByaXZhdGUgVFtdIGVsZW1lbnRzOwogICAgICAgIHByaXZhdGUgaW50IGVuZDsKfQoKcHVibGljIHN0YXRpYyBjbGFzcyBQcm9ncmFtIHsKICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpIHsKICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSBuZXcgUmluZ0J1ZmZlcjxpbnQ+KDEwKTsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5BZGQoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Kb2luKCIsICIsIGJ1ZmZlcikpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQo=
compilation info
prog.cs(45,50): error CS1502: The best overloaded method match for `string.Join(string, string[])' has some invalid arguments
/usr/lib/mono/2.0/mscorlib.dll (Location of the symbol related to previous error)
prog.cs(45,50): error CS1503: Argument `#2' cannot convert `RingBuffer<int>' expression to type `string[]'
Compilation failed: 2 error(s), 0 warnings
stdout