ソースコード
private static string RotateClockwise( string input, int count )
{
for ( var i = 0; i < count; i++ )
{
input = RotateClockwise( input );
}
return input;
}
private static string RotateClockwise( string input )
{
var lines = input.Split( '\n', StringSplitOptions.RemoveEmptyEntries );
var rowCount = lines.Length;
var colCount = lines[ 0 ].Length;
var matrix = new char[ rowCount, colCount ];
for ( var i = 0; i < rowCount; i++ )
{
for ( var j = 0; j < colCount; j++ )
{
matrix[ i, j ] = lines[ i ][ j ];
}
}
var rotatedMatrix = new char[ colCount, rowCount ];
for ( var i = 0; i < colCount; i++ )
{
for ( var j = 0; j < rowCount; j++ )
{
rotatedMatrix[ i, j ] = matrix[ rowCount - j - 1, i ];
}
}
var rotatedBuilder = new StringBuilder();
for ( var i = 0; i < colCount; i++ )
{
for ( var j = 0; j < rowCount; j++ )
{
rotatedBuilder.Append( rotatedMatrix[ i, j ] );
}
if ( i != colCount - 1 )
{
rotatedBuilder.Append( "\n" );
}
}
return rotatedBuilder.ToString();
}
使用例
var str = @"1000
1111";
Debug.LogWarning( RotateClockwise( str ) );
Debug.LogWarning( RotateClockwise( str, 1 ) );
Debug.LogWarning( RotateClockwise( str, 2 ) );
Debug.LogWarning( RotateClockwise( str, 3 ) );
Debug.LogWarning( RotateClockwise( str, 4 ) );