CSS ไม่ได้ตราบเท่าที่ฉันรู้ว่าทัวริงสมบูรณ์ แต่ความรู้ของ CSS มี จำกัด มาก
- CSS ทัวริงสมบูรณ์หรือไม่
- มีร่างหรือคณะกรรมการชุดย่อยที่มีอยู่กำลังพิจารณาคุณสมบัติทางภาษาที่อาจทำให้ทัวริงสมบูรณ์หากไม่ได้ตอนนี้หรือไม่?
CSS ไม่ได้ตราบเท่าที่ฉันรู้ว่าทัวริงสมบูรณ์ แต่ความรู้ของ CSS มี จำกัด มาก
คำตอบ:
คุณสามารถเข้ารหัสRule 110ใน CSS3 ได้ดังนั้นจึงเป็นการทำให้ทัวริงสมบูรณ์ตราบใดที่คุณพิจารณาไฟล์ HTML ที่เหมาะสมและการโต้ตอบกับผู้ใช้เพื่อเป็นส่วนหนึ่งของ“ การดำเนินการ” ของ CSS มีการใช้งานที่ดีพอสมควรและมีการใช้งานอื่นที่นี่:
body {
-webkit-animation: bugfix infinite 1s;
margin: 0.5em 1em;
}
@-webkit-keyframes bugfix { from { padding: 0; } to { padding: 0; } }
/*
* 111 110 101 100 011 010 001 000
* 0 1 1 0 1 1 1 0
*/
body > input {
-webkit-appearance: none;
display: block;
float: left;
border-right: 1px solid #ddd;
border-bottom: 1px solid #ddd;
padding: 0px 3px;
margin: 0;
font-family: Consolas, "Courier New", monospace;
font-size: 7pt;
}
body > input::before {
content: "0";
}
p {
font-family: Verdana, sans-serif;
font-size: 9pt;
margin-bottom: 0.5em;
}
body > input:nth-of-type(-n+30) { border-top: 1px solid #ddd; }
body > input:nth-of-type(30n+1) { border-left: 1px solid #ddd; clear: left; }
body > input::before { content: "0"; }
body > input:checked::before { content: "1"; }
body > input:checked { background: #afa !important; }
input:not(:checked) +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input::before {
content: "1";
}
input:not(:checked) +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input {
background: #fa0;
}
input:checked +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input::before {
content: "1";
}
input:checked +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input {
background: #fa0;
}
input:checked +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input::before {
content: "1";
}
input:checked +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input {
background: #fa0;
}
input:checked + input:checked + input:checked +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input::before {
content: "0";
}
input:checked + input:checked + input:checked +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input {
background: #fff;
}
input:not(:checked) + input:not(:checked) + input:not(:checked) +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input::before {
content: "0";
}
input:not(:checked) + input:not(:checked) + input:not(:checked) +
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
input {
background: #fff;
}
body > input:nth-child(30n) { display: none !important; }
body > input:nth-child(30n) + label { display: none !important; }
<p><a href="http://en.wikipedia.org/wiki/Rule_110">Rule 110</a> in (webkit) CSS, proving Turing-completeness.</p>
<!-- A total of 900 checkboxes required -->
<input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/>
แง่มุมหนึ่งของทัวริงครบถ้วนเป็นลังเลปัญหา
ซึ่งหมายความว่าหาก CSS ทัวริงสมบูรณ์แล้วไม่มีขั้นตอนวิธีทั่วไปในการพิจารณาว่าโปรแกรม CSS จะเสร็จสิ้นการทำงานหรือวนซ้ำตลอดไป
แต่เราสามารถหาอัลกอริธึมเช่นนี้สำหรับ CSS! นี่มันคือ:
หากสไตล์ชีทไม่ประกาศภาพเคลื่อนไหวก็จะหยุด
หากมีภาพเคลื่อนไหวให้ทำดังนี้:
หากanimation-iteration-count
มีinfinite
และตัวเลือกที่มีอยู่ถูกจับคู่ใน HTML ก็จะไม่หยุด
มิฉะนั้นจะหยุด
แค่นั้นแหละ. เนื่องจากเราเป็นเพียงแค่การแก้ไขลังเลปัญหาสำหรับ CSS มันตามที่CSS จะไม่ทัวริงสมบูรณ์
(คนอื่น ๆ ได้กล่าวถึง IE 6 ซึ่งช่วยให้สามารถฝังการแสดงออก JavaScript โดยพลการใน CSS ซึ่งเห็นได้ชัดว่าจะเพิ่มความสมบูรณ์ทัวริง แต่คุณลักษณะที่ไม่ได้มาตรฐานและไม่มีใครอยู่ในใจของพวกเขาใช้มัน)
Daniel Wagner พูดถึงจุดที่ฉันคิดถึงในคำตอบเดิม เขาตั้งข้อสังเกตว่าในขณะที่ฉันครอบคลุมภาพเคลื่อนไหวส่วนอื่น ๆ ของเอ็นจิ้นสไตล์เช่นตัวเลือกตัวเลือกหรือเลย์เอาต์สามารถนำไปสู่ความสมบูรณ์ของทัวริงได้เช่นกัน ในขณะที่มันยากที่จะโต้แย้งอย่างเป็นทางการเกี่ยวกับสิ่งเหล่านี้ฉันจะพยายามอธิบายว่าทำไมทัวริงสมบูรณ์จึงยังไม่เกิดขึ้น
ข้อแรก: ทัวริงภาษาที่สมบูรณ์มีวิธีป้อนข้อมูลกลับเข้าไปในตัวเองไม่ว่าจะเป็นการเรียกซ้ำหรือวนซ้ำ แต่การออกแบบภาษา CSS นั้นไม่เป็นมิตรกับความคิดเห็นนี้:
@media
ข้อความค้นหาสามารถตรวจสอบคุณสมบัติของเบราว์เซอร์เท่านั้นเช่นขนาดวิวพอร์ตหรือความละเอียดพิกเซล คุณสมบัติเหล่านี้สามารถเปลี่ยนแปลงได้ผ่านการโต้ตอบของผู้ใช้หรือรหัส JavaScript (เช่นการปรับขนาดหน้าต่างเบราว์เซอร์) แต่ไม่สามารถทำได้ผ่าน CSS เพียงอย่างเดียว
::before
และ::after
องค์ประกอบแบบหลอกไม่ถือเป็นส่วนหนึ่งของ DOMและไม่สามารถจับคู่ด้วยวิธีอื่นใด
ตัวเลือก combinatorsสามารถตรวจสอบองค์ประกอบด้านบนและก่อนองค์ประกอบปัจจุบันเท่านั้นดังนั้นจึงไม่สามารถใช้เพื่อสร้างรอบการพึ่งพาได้
เป็นไปได้ที่จะเลื่อนองค์ประกอบออกไปเมื่อคุณวางเมาส์เหนือวัตถุ แต่ตำแหน่งจะอัปเดตเมื่อคุณเลื่อนเมาส์เท่านั้น
ซึ่งควรจะเพียงพอที่จะโน้มน้าวให้คุณทราบว่าตรงกับตัวเลือกในตัวของมันเองไม่สามารถทัวริงสมบูรณ์ แต่เค้าโครงล่ะ
อัลกอริธึมเค้าโครง CSS ที่ทันสมัยมีความซับซ้อนมากพร้อมคุณสมบัติเช่นFlexboxและGrid muddying the water แต่แม้ว่ามันจะเป็นไปได้ที่จะทริกเกอร์วนรอบที่ไม่มีที่สิ้นสุดกับเลย์เอาต์มันก็ยากที่จะใช้ประโยชน์จากสิ่งนี้เพื่อทำการคำนวณที่มีประโยชน์ นั่นเป็นเพราะตัวเลือก CSS ตรวจสอบเฉพาะโครงสร้างภายในของ DOM ไม่ใช่องค์ประกอบที่วางไว้บนหน้าจอ ดังนั้นใด ๆ ครบถ้วนหลักฐานทัวริงใช้ระบบรูปแบบจะต้องขึ้นอยู่กับรูปแบบการอยู่คนเดียว
สุดท้าย - และนี่อาจจะเป็นเหตุผลที่สำคัญที่สุด - ผู้ขายเบราว์เซอร์ที่มีความสนใจในการรักษา CSS ไม่ทัวริงสมบูรณ์ โดยการ จำกัด ภาษาผู้ขายอนุญาตให้มีการเพิ่มประสิทธิภาพที่ชาญฉลาดซึ่งทำให้เว็บเร็วขึ้นสำหรับทุกคน ยิ่งกว่านั้น Google อุทิศฟาร์มเซิร์ฟเวอร์ทั้งหมดเพื่อค้นหาข้อบกพร่องใน Chrome หากมีวิธีเขียนลูปแบบไม่สิ้นสุดโดยใช้ CSS พวกเขาน่าจะพบมันแล้ว😉
ตามบทความนี้ก็ไม่ได้ บทความนี้ยังระบุว่าไม่ใช่ความคิดที่ดีที่จะทำให้เป็นหนึ่ง
อ้างจากหนึ่งในความคิดเห็น:
ดังนั้นฉันไม่เชื่อว่า CSS นั้นจะสมบูรณ์ ไม่มีความสามารถในการกำหนดฟังก์ชันใน CSS เพื่อให้ระบบเสร็จสิ้นการทัวริงมันจะต้องเป็นไปได้ในการเขียนล่าม: ฟังก์ชั่นที่ตีความนิพจน์ที่แสดงถึงโปรแกรมที่จะดำเนินการ CSS ไม่มีตัวแปรที่ผู้ใช้สามารถเข้าถึงได้โดยตรง ดังนั้นคุณไม่สามารถสร้างแบบจำลองโครงสร้างที่แสดงถึงโปรแกรมที่จะตีความใน CSS
ทัวริงสมบูรณ์ไม่เพียงเกี่ยวกับ "การกำหนดฟังก์ชั่น" หรือ "มี ifs / ลูป / ฯลฯ " ตัวอย่างเช่น Haskell ไม่มี "loop" lambda-แคลคูลัสไม่มี "ifs" ฯลฯ ...
ตัวอย่างเช่นเว็บไซต์นี้: http://experthuman.com/programming-with-nothing ผู้เขียนใช้ Ruby และสร้างโปรแกรม "FizzBuzz" ที่มีเฉพาะการปิด (ไม่มีสตริงตัวเลขหรืออะไรทำนองนั้น) ...
มีตัวอย่างเมื่อผู้คนคำนวณฟังก์ชั่นเกี่ยวกับคณิตศาสตร์ใน Scala โดยใช้เฉพาะระบบพิมพ์
ดังนั้นใช่แล้วในความคิดของฉัน CSS3 + HTML นั้นสมบูรณ์แบบมาแล้ว
ปัญหาพื้นฐานที่นี่คือเครื่องใด ๆ ที่เขียนด้วย HTML + CSS ไม่สามารถประเมินได้หลายขั้นตอน (เช่นไม่มีการเรียกซ้ำ "ของจริง") ยกเว้นว่าโค้ดนั้นมีความยาวไม่สิ้นสุด และคำถามที่ว่าเครื่องนี้จะไปถึงการกำหนดค่าH
ในn
ขั้นตอนหรือน้อยกว่านั้นจะตอบได้เสมอถ้าn
มี จำกัด
H
หรือไม่" สามารถตัดสินใจได้เสมอและไม่สมบูรณ์ทัวริง การติดตั้งหุ่นยนต์อัตโนมัติที่สามารถทำซ้ำได้จำนวน จำกัด ไม่สามารถทำให้สมบูรณ์ได้
นี้คำตอบที่ไม่ถูกต้องเพราะมันผสมรายละเอียดของ UTM และ UTM ตัวเอง (ยูนิเวอร์แซทัวริง Machine)
เรามีคำตอบที่ดีแต่จากมุมมองที่ต่างกันและมันไม่แสดงข้อบกพร่องโดยตรงในคำตอบยอดนิยมปัจจุบัน
ก่อนอื่นเราสามารถยอมรับว่ามนุษย์สามารถทำงานได้ในฐานะ UTM นี่หมายความว่าถ้าเราทำ
CSS + Human == UTM
จากนั้นCSS
ส่วนหนึ่งจะไม่ได้ผลเพราะการทำงานทุกคนสามารถทำได้โดยการHuman
ที่จะทำ UTM ส่วนหนึ่ง การคลิกอาจเป็น UTM ได้เนื่องจากคุณไม่ได้คลิกแบบสุ่ม แต่เฉพาะในบางสถานที่
แทนที่จะเป็น CSS ฉันสามารถใช้ข้อความนี้ ( กฎข้อ 110 ):
000 -> 0
001 -> 1
010 -> 1
011 -> 1
100 -> 0
101 -> 1
110 -> 1
111 -> 0
เพื่อเป็นแนวทางในการกระทำของฉันและผลลัพธ์จะเหมือนกัน นี่หมายถึงข้อความนี้ UTM? ไม่มีนี่เป็นเพียงอินพุต (คำอธิบาย) ที่ UTM อื่น ๆ (มนุษย์หรือคอมพิวเตอร์) สามารถอ่านและรันได้ การคลิกก็เพียงพอแล้วที่จะเรียกใช้ UTM ใด ๆ
ส่วนที่สำคัญที่การขาด CSS คือความสามารถในการเปลี่ยนสถานะเป็นของมันเองตามอำเภอใจหาก CSS สามารถสร้างการคลิกได้ก็จะเป็น UTM อาร์กิวเมนต์ที่การคลิกของคุณเป็น "ข้อเหวี่ยง" สำหรับ CSS นั้นไม่ถูกต้องเพราะ "ข้อเหวี่ยง" จริงสำหรับ CSS คือเครื่องมือวางรูปแบบที่เรียกใช้และควรจะเพียงพอที่จะพิสูจน์ว่า CSS นั้นเป็น UTM
R
- read state และW
- write state CA ปกติทำลำดับอนันต์RWRWRWRW...
ในกรณีของ CSS ที่เรามีเท่านั้นR
และเราไม่มีW
เพราะมันแก้ไขสิ่งที่ไม่สามารถอ่านได้ถ้าเราเพิ่มB
- การกระทำของเบราว์เซอร์แล้วเราอาจมีRBRBRBR...
แต่แล้วBBBBBB
เป็นของตัวเอง UTM
CSS ไม่ใช่ภาษาการเขียนโปรแกรมดังนั้นคำถามของทัวริงสมบูรณ์เป็นหนึ่งที่ไม่มีความหมาย หากมีการเพิ่มส่วนขยายการเขียนโปรแกรมลงใน CSS เช่นกรณีใน IE6 แล้วการสังเคราะห์ใหม่เป็นสิ่งที่แตกต่างกันโดยสิ้นเชิง
CSS เป็นเพียงคำอธิบายสไตล์ มันไม่มีตรรกะใด ๆ และโครงสร้างมันแบน