今日はマス北野の日です。
というわけで、数回前のネタであるフラクタルで遊んでみましょう。
コードビハインド
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class FractaleTest_FractaleTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.rowRepeater.DataSource = this.CreateDataSource(64);
this.rowRepeater.DataBind();
}
/// <summary>
/// データソースを作成します。
/// </summary>
/// <param name="lineCount">表示行数</param>
/// <returns>データソース</returns>
private List<List<bool>> CreateDataSource(int lineCount)
{
List<List<bool>> dataSource = new List<List<bool>>(lineCount);
for (int i = 0; i < lineCount; i++)
{
int dataCount = i + 1;
List<bool> line = new List<bool>(dataCount);
for (int j = 0; j < dataCount; j++)
{
if ((j == 0) || (j == dataCount - 1))
{
line.Add(true);
}
else
{
List<bool> previousLine = dataSource[dataSource.Count - 1];
line.Add(previousLine[j - 1] ^ previousLine[j]);
}
}
dataSource.Add(line);
}
return dataSource;
}
}
aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FractaleTest.aspx.cs" Inherits="FractaleTest_FractaleTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>シェルピンスキーのギャスケット</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table cellpadding="0" cellspacing="0" border="0">
<asp:Repeater ID="rowRepeater" runat="server">
<ItemTemplate>
<tr>
<td style="text-align:center; font-family:Monospace" nowrap="nowrap">
<asp:Repeater ID="circleRepeater" runat="server" DataSource="<%# Container.DataItem %>">
<ItemTemplate>
<%# ((bool) Container.DataItem) ? "○" : "●" %>
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
</form>
</body>
</html>
結果(ちょっとサイズでかいです)
フラクタルだけに再帰でやりたかったけど、わかりにくいソースになりそうでやめた。