Pseudosphere

Joined 1 year ago
no edit summary
Line 277: Line 277:  
* [[5a/Timer]] (I made just the timer part)
 
* [[5a/Timer]] (I made just the timer part)
 
* [[3-sphere]]
 
* [[3-sphere]]
 +
* [[What beats rock?]]
 +
* [[Rotating SVG Cube]]
 +
* [[Okinchest]]
 +
* [[Okinchess]]
 +
* [[Rule 110]]
 +
* [[DVD in a triangle]]
 +
* [[Exterior]]
 +
* [[Text Mode]]
 
==Templates==
 
==Templates==
 
* [[Template:Tesseract CSS]]
 
* [[Template:Tesseract CSS]]
Line 303: Line 311:  
* <span style="font-family: Rubik, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px;">[[Template:Fandom]]</span>
 
* <span style="font-family: Rubik, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px;">[[Template:Fandom]]</span>
 
* [[Template:MCText]]
 
* [[Template:MCText]]
 +
* [[Template:WBR]]
 +
* [[Template:Text Cuboid]]
 +
* [[Template:Disputedly imaginary number]]
 +
* [[Template:Transclude guard]]
 +
* [[Template:Bit]]
 +
* [[Template:Unique number]]
 +
* [[Template:Text Mode]]
 +
* [[Template:Philosophical argument]]
 +
* [[Template:House of Leaves]]
 
==Scripts I made for pages==
 
==Scripts I made for pages==
 
===Licensing===
 
===Licensing===
Line 1,036: Line 1,053:  
     mwcollapse.Collapsible("p", count + 1, "YOU [[Nim (Pedantic Mode) (Easy Mode)/Wiki Camp 2 Challenge Crystal|WIN]]", attributes={"class": "bigtexty"}))
 
     mwcollapse.Collapsible("p", count + 1, "YOU [[Nim (Pedantic Mode) (Easy Mode)/Wiki Camp 2 Challenge Crystal|WIN]]", attributes={"class": "bigtexty"}))
 
elementContainer.compile("nim", stateMachine)
 
elementContainer.compile("nim", stateMachine)
 +
print(elementContainer)
 +
</syntaxhighlight>
 +
===[[Okinchess]] generator===
 +
<syntaxhighlight lang="python">
 +
import sys
 +
 +
alpha = "abcdefgh"
 +
 +
l = ["""{{#css:
 +
#B table{
 +
border-spacing:0;
 +
height:512px;
 +
width:512px
 +
}
 +
#B td:nth-child(2n+1),#B tr:nth-child(2n) td:nth-child(2n){
 +
background-color:#FFF
 +
}
 +
#B td:nth-child(2n),#B tr:nth-child(2n) td:nth-child(2n+1){
 +
background-color:#000;
 +
}#B td{
 +
padding:0;
 +
vertical-align:top
 +
}.D {
 +
background-color:#0F07;
 +
display:none;
 +
height:48px;
 +
margin:8px;
 +
position:absolute;
 +
width:48px
 +
}.P{
 +
align-items:center;
 +
border-radius:50%;
 +
display:flex;
 +
height:64px;
 +
position:absolute;
 +
transition:0.5s ease translate;
 +
width:64px
 +
}.P:nth-child(2n) img{
 +
filter:invert()
 +
}
 +
""".replace("\n", ""), ",".join(f"#mw-customcollapsible-w{x}:not(.mw-collapsed)~#B .w{x},#mw-customcollapsible-b{x}:not(.mw-collapsed)~#B .b{x}" for x in alpha), "{background-color: #0F07}"]
 +
 +
#Piece moving rules
 +
for y in range(1, 9):
 +
    for i, x in enumerate(alpha):
 +
        L = []
 +
        #Rules for when a piece is in range of a destination
 +
        for k, z in enumerate(alpha):
 +
            if abs(i - k) < y - 1:
 +
                #White move up
 +
                L.append(f"#mw-customcollapsible-w{z}P{x}{y - 1}.mw-collapsed~#B #w{z}D{x}{y}")
 +
            if i != 0 and abs(i - k - 1) < y - 1:
 +
                #White capture right
 +
                L.extend(f"#mw-customcollapsible-w{z}P{alpha[i - 1]}{y - 1}.mw-collapsed~#mw-customcollapsible-b{c}P{x}{y}.mw-collapsed~#B #w{z}D{x}{y}R{c}" for l, c in enumerate(alpha) if abs(i - l) < 9 - y)
 +
            if i != 7 and abs(i - k + 1) < y - 1:
 +
                #White capture left
 +
                L.extend(f"#mw-customcollapsible-w{z}P{alpha[i + 1]}{y - 1}.mw-collapsed~#mw-customcollapsible-b{c}P{x}{y}.mw-collapsed~#B #w{z}D{x}{y}L{c}" for l, c in enumerate(alpha) if abs(i - l) < 9 - y)
 +
            if abs(i - k) < 8 - y:
 +
                #Black move down
 +
                L.append(f"#mw-customcollapsible-b{z}P{x}{y + 1}.mw-collapsed~#B #b{z}D{x}{y}")
 +
            if i != 0 and abs(i - k - 1) < 8 - y:
 +
                #Black capture right
 +
                L.extend(f"#mw-customcollapsible-w{c}P{x}{y}.mw-collapsed~#mw-customcollapsible-b{z}P{alpha[i - 1]}{y + 1}.mw-collapsed~#B #b{z}D{x}{y}R{c}" for l, c in enumerate(alpha) if abs(i - l) < y)
 +
            if i != 7 and abs(i - k + 1) < 8 - y:
 +
                #Black capture left
 +
                L.extend(f"#mw-customcollapsible-w{c}P{x}{y}.mw-collapsed~#mw-customcollapsible-b{z}P{alpha[i + 1]}{y + 1}.mw-collapsed~#B #b{z}D{x}{y}L{c}" for l, c in enumerate(alpha) if abs(i - l) < y)
 +
        l.append(",".join(L))
 +
        l.append("{display:block}")
 +
        #Rules for blocking motion
 +
        l.append(":is(")
 +
        l.append(",".join([f"#mw-customcollapsible-w{z}C:not(.mw-collapsed)~#mw-customcollapsible-w{z}P{x}{y}.mw-collapsed" for k, z in enumerate(alpha) if abs(i - k) < y] + [f"#mw-customcollapsible-b{z}C:not(.mw-collapsed)~#mw-customcollapsible-b{z}P{x}{y}.mw-collapsed" for k, z in enumerate(alpha) if abs(i - k) < 9 - y]))
 +
        l.append(")~#B :is(")
 +
        L = [f"#w{z}D{x}{y}" for k, z in enumerate(alpha) if abs(i - k) < y - 1] + [f"#b{z}D{x}{y}" for k, z in enumerate(alpha) if abs(i - k) < 8 - y]
 +
        while "" in L:
 +
            L.remove("")
 +
        l.append(",".join(L))
 +
        l.append("){display:none}")
 +
 +
#Piece positioning
 +
for y in range(1, 9):
 +
    for i, x in enumerate(alpha):
 +
        l.append(",".join([f"#mw-customcollapsible-w{z}P{x}{y}.mw-collapsed~#B .w{z}" for k, z in enumerate(alpha) if abs(i - k) < y] + [f"#mw-customcollapsible-b{z}P{x}{y}.mw-collapsed~#B .b{z}" for k, z in enumerate(alpha) if abs(i - k) < 9 - y]))
 +
        l.append(f" {{translate:{i}00% {8 - y}00%}}")
 +
 +
print(sum(len(s) for s in l) - 7, file=sys.stderr)
 +
 +
l.append("}")
 +
 +
#Piece selection & capture memory
 +
l.extend(f"{{{{Multitarget customcollapsible|w{x}|mw-collapsed|display:none !important}}}}{{{{Multitarget customcollapsible|w{x}C||display:none !important}}}}{{{{Multitarget customcollapsible|b{x}|mw-collapsed|display:none !important}}}}{{{{Multitarget customcollapsible|b{x}C||display: none !important}}}}" for x in "abcdefgh")
 +
 +
#Position memory
 +
for y in range(1, 9):
 +
    for i, x in enumerate(alpha):
 +
        l.extend(f'<div class="mw-collapsible{" mw-collapsed" if y == 1 and x == z else ""}" id="mw-customcollapsible-w{z}P{x}{y}"></div>' for k, z in enumerate(alpha) if abs(i - k) < y)
 +
        l.extend(f'<div class="mw-collapsible{" mw-collapsed" if y == 8 and x == z else ""}" id="mw-customcollapsible-b{z}P{x}{y}"></div>' for k, z in enumerate(alpha) if abs(i - k) < 9 - y)
 +
 +
l.append('<div id="B">')
 +
 +
#The nerpas
 +
l.extend(f'<div class="mw-customcollapsible-w{x}C P w{x} mw-customtoggle-w{x}">[[File:Nerpawhite.png|64x64px|link=]]</div><div class="mw-customcollapsible-b{x}C P b{x} mw-customtoggle-b{x}">[[File:Nerpawhite.png|64x64px|link=]]</div>' for x in alpha)
 +
 +
l.append("<table>")
 +
 +
#Moves
 +
for y in range(8, 0, -1):
 +
    l.append("<tr>")
 +
    for i, x in enumerate(alpha):
 +
        l.append("<td>")
 +
        for k, z in enumerate(alpha):
 +
            d = abs(i - k)
 +
            if d < y - 1:
 +
                #White move up
 +
                l.append(f'<div class="mw-customcollapsible-w{z} mw-customcollapsible-w{z}C D mw-customtoggle-w{z} mw-customtoggle-w{z}P{x}{y - 1} mw-customtoggle-w{z}P{x}{y}" id="w{z}D{x}{y}"></div>')
 +
            if i != 0 and abs(i - k - 1) < y - 1:
 +
                #White capture right
 +
                l.extend(f'<div class="mw-customcollapsible-w{z} mw-customcollapsible-w{z}C mw-customcollapsible-b{c}C D mw-customtoggle-w{z} mw-customtoggle-b{c}C mw-customtoggle-w{z}P{alpha[i - 1]}{y - 1} mw-customtoggle-w{z}P{x}{y}" id="w{z}D{x}{y}R{c}"></div>' for l, c in enumerate(alpha) if abs(i - l) < 9 - y)
 +
            if i != 7 and abs(i - k + 1) < y - 1:
 +
                #White capture left
 +
                l.extend(f'<div class="mw-customcollapsible-w{z} mw-customcollapsible-w{z}C mw-customcollapsible-b{c}C D mw-customtoggle-w{z} mw-customtoggle-b{c}C mw-customtoggle-w{z}P{alpha[i + 1]}{y - 1} mw-customtoggle-w{z}P{x}{y}" id="w{z}D{x}{y}L{c}"></div>' for l, c in enumerate(alpha) if abs(i - l) < 9 - y)
 +
            if d < 8 - y:
 +
                #Black move down
 +
                l.append(f'<div class="mw-customcollapsible-b{z} mw-customcollapsible-b{z}C D mw-customtoggle-b{z} mw-customtoggle-b{z}P{x}{y + 1} mw-customtoggle-b{z}P{x}{y}" id="b{z}D{x}{y}"></div>')
 +
            if i != 0 and abs(i - k - 1) < 8 - y:
 +
                #Black capture right
 +
                l.extend(f'<div class="mw-customcollapsible-b{z} mw-customcollapsible-b{z}C mw-customcollapsible-w{c}C D mw-customtoggle-b{z} mw-customtoggle-w{c}C mw-customtoggle-b{z}P{alpha[i - 1]}{y + 1} mw-customtoggle-b{z}P{x}{y}" id="b{z}D{x}{y}R{c}"></div>' for l, c in enumerate(alpha) if abs(i - l) < y)
 +
            if i != 7 and abs(i - k + 1) < 8 - y:
 +
                #Black capture left
 +
                l.extend(f'<div class="mw-customcollapsible-b{z} mw-customcollapsible-b{z}C mw-customcollapsible-w{c}C D mw-customtoggle-b{z} mw-customtoggle-w{c}C mw-customtoggle-b{z}P{alpha[i + 1]}{y + 1} mw-customtoggle-b{z}P{x}{y}" id="b{z}D{x}{y}L{c}"></div>' for l, c in enumerate(alpha) if abs(i - l) < y)
 +
        l.append("</td>")
 +
    l.append("</tr>")
 +
 +
l.append("</table></div>[[Category:Minigames]][[Category:Collapsible minigames]][[Category:Pages which use over 10 kilobytes of CSS]][[Category:Pages which use over 100 kilobytes of CSS]][[Category:Pages which use over 500 kilobytes of CSS]][[Category:Two-player games]]")
 +
 +
print(sum(len(s) for s in l), file=sys.stderr)
 +
 +
print("".join(l))
 +
</syntaxhighlight>
 +
===[[Rule 110]] generator===
 +
<syntaxhighlight lang="python">
 +
#!/bin/python3
 +
#output is currently at least around 2x larger than it should be, since all triggers are reversible, but mwcollapse can't optimize for that yet
 +
import mwcollapse
 +
 +
rulenum = 110
 +
rule = tuple((1 << n & rulenum) != 0 for n in range(8))
 +
depth = 8
 +
 +
def transition(state, transition):
 +
    return tuple(state[n] != (n == transition) for n in range(8))
 +
def stategen(state):
 +
    result = list(state)
 +
    for n in range(depth - 1):
 +
        state = [rule[int(state[k - 1 & 7]) << 2 | int(state[k]) << 1 | int(state[k + 1 & 7])] for k in range(8)]
 +
        result.extend(state)
 +
    return (not x for x in result)
 +
 +
elementContainer = mwcollapse.ElementContainer(
 +
    f"""{{{{#css:
 +
#w-{rulenum} {{
 +
border-spacing: 0;
 +
margin: auto;
 +
}}
 +
#w-{rulenum} span {{
 +
display: inline-block;
 +
height: 100%;
 +
width: 100%;
 +
}}
 +
#w-{rulenum} td {{
 +
background: #FFF;
 +
display: table-cell !important;
 +
height: 64px;
 +
outline: 1px solid #CCC;
 +
width: 64px;
 +
}}
 +
#w-{rulenum} .mw-collapsed {{
 +
background: #000;
 +
}}
 +
}}}}
 +
Click the top cells!""",
 +
    mwcollapse.Element("table",
 +
        mwcollapse.Element("tr",
 +
            *(mwcollapse.Toggleable("td", n, mwcollapse.Trigger("span", n)) for n in range(8))
 +
        ),
 +
        *(mwcollapse.Element("tr",
 +
            *(mwcollapse.Toggleable("td", x + y * 8) for x in range(8))
 +
        ) for y in range(1, depth)),
 +
    attributes={"id": "w-110"}),
 +
    "[[Category:Rules]][[Category:Math]][[Category:Cellular automata]][[Category:Pages that don't even remotely resemble a Wikipedia article]]"
 +
)
 +
elementContainer.compile("w", mwcollapse.genStateMachine(range(8), transition, stategen, tuple(False for n in range(8))))
 
print(elementContainer)
 
print(elementContainer)
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 1,053: Line 1,261:  
{{Userbox|id=[[File:Tautology.png|50x50px|link=Tautology]]|id-s=15|info=This user is.|info-fc=#000|info-c=#FFF|info-s=9|info-p=1pt|info-lh=1.05em|border-c=#777|border-s=5}}
 
{{Userbox|id=[[File:Tautology.png|50x50px|link=Tautology]]|id-s=15|info=This user is.|info-fc=#000|info-c=#FFF|info-s=9|info-p=1pt|info-lh=1.05em|border-c=#777|border-s=5}}
 
<center style="filter: invert(); margin-top: 1968.83px;">[[File:Exceptionalmindmap2.png|link=196883]]</center>
 
<center style="filter: invert(); margin-top: 1968.83px;">[[File:Exceptionalmindmap2.png|link=196883]]</center>
 +
<p style="font-family: serif; font-size: 200%;">:Þ</p>
1,154

edits