СНиП 3.02.01-87 Земляные сооружения, основания и фундаменты
СТРОИТЕЛЬНЫЕ НОРМЫ И ПРАВИЛА
ЗЕМЛЯНЫЕ СООРУЖЕНИЯ,
ОСНОВАНИЯ И ФУНДАМЕНТЫ
СНиП 3.02.01-87
ГОСУДАРСТВЕННЫЙ СТРОИТЕЛЬНЫЙ
КОМИТЕТ СССР
ПОДГОТОВЛЕНЫ К УТВЕРЖДЕНИЮ Управлением стандартизациии технических норм в строительстве Госстроя СССР (В. А. Кулиничев).
С введением в действие СНиП 3.02.01-87 „3емляные сооружения,основанияи фундаменты» утрачивают силу СНиП 3.02.01-83* „Основания ифундаменты»,СНиП III-8-76 „Земляные сооружения» и СН 536-81 „Инструкция поустройству обратных засыпок грунта в стесненных местах».
При пользовании нормативным документом следует учитыватьутвержденныеизменения строительных норм и правил и государственных стандартов,публикуемые в журнале „Бюллетень строительной техники», „Сборнике измененийстроительных норм и правил» Госстроя СССР и информационном указателе
Государственный строительный | Строительные нормы и правила | СНиП 3.02.01-87 |
комитет СССР (Госстрой СССР) |
Земляные сооружения, основания и фундаменты | Взамен СНиП 3.02.01-83*, СНиП III-8-76 и СН 536-81 |
1. ОБЩИЕ ПОЛОЖЕНИЯ
1.1. Настоящие нормы и правила распространяются на производство и приемку земляных работ, устройство оснований и фундаментов при строительстве новых, реконструкции и расширении действующих предприятий, зданий и сооружений.
1.2. Настоящие правила следует соблюдать при проектировании земляных сооружений, оснований и фундаментов, составлении проектов производства работ и организации строительства, а также при их возведении.
1.3. При производстве земляных работ, устройстве оснований и фундаментов на строительстве гидротехнических сооружений, сооружений водного транспорта, мелиоративных систем, магистральных трубопроводов, автомобильных и железных дорог и аэродромов, линий связи и электропередач, а также кабельных линий другого назначения, кроме требований настоящих правил, следует выполнять требования соответствующих СНиП, учитывающих специфику возведения этих сооружений.
1. 5. При разработке карьеров, кроме грунтовых, необходимо соблюдать требования единых правил безопасности при разработке месторождений полезных ископаемых открытым способом, утвержденных Госгортехнадзором СССР.
Примечание. Грунтовый карьер — это выемка, разрабатываемая с целью получения грунта для устройства насыпей и обратных засыпок, неотносящаяся к горнодобывающим предприятиям.
Внесены ЦНИИОМТП Госстроя СССР | Утверждены постановлением Государственного строительного комитета СССР от 4 декабря 1987 г. № 280 |
Срок введения в действие 1 июля 1988 г. |
1.6. При ведении взрывных работ следует соблюдать требования единых правил безопасности при взрывных работах, утвержденных Госгортехнадзором СССР.
1.7. Земляные сооружения, основания и фундаменты должны соответствовать проекту.
Примечание. Здесь и далее термином „проект» обозначается проектно-сметная документация, разработанная в соответствии со СНиП 1.02.01-85.
1.8. Применяемые при возведении земляных сооружений, устройстве оснований и фундаментов грунты, материалы, изделия и конструкции должны удовлетворять требованиям проектов, соответствующих стандартов и технических условий. Замена предусмотренных проектом грунтов, материалов, изделий и конструкций, входящих в состав возводимого сооружения или его основания, допускается только по согласованию с проектной организацией и заказчиком.
1.9. При производстве работ по возведению фундаментов из монолитного, сборного бетона или железобетона, каменной или кирпичной кладки, на основаниях, подготовленных в соответствии с требованиями настоящих правил, следует руководствоваться СНиП 3. 03.01-87 и СНиП 3.04.01-87.
1.10. При производстве земляных работ, устройстве оснований и фундаментов следует выполнять входной, операционный и приемочный контроль, руководствуясь требованиями СНиП 3.01.01-85 и справочным приложением 1.
1.11. Приемку земляных работ, оснований и фундаментов с составлением актов освидетельствования скрытых работ следует выполнять, руководствуясь рекомендуемым приложением 2. При необходимости в проекте допускается указывать другие элементы, подлежащие промежуточной приемке с составлением актов освидетельствования скрытых работ.
1.12. В проектах допускается при соответствующем обосновании назначать способы производства работ и технические решения, устанавливать величины предельных отклонений, объемы и методы контроля, отличающиеся от предусмотренных настоящими правилами.
Вы можете скачать документ по ссылке ниже:
3.02.01-87 Земляные сооружения, основания и фундаменты.zip
Крутизна откосов котлованов, траншей и др.
выемок по нормамКрутизна откоса — это отношение глубины котлована (траншеи или др. выемки) к его заложению (проекции откоса на горизонтальную плоскость).
Крутизна откосов котлованов, траншей и др. выемок приведена в следующих группах нормативных документов:
I группа:
- СП 45.13330.2017 Земляные сооружения, основания и фундаменты. Актуализированная редакция СНиП 3.02.01-87. (обязательный к применению с 01 августа 2020 согласно постановлению Правительства РФ от 04 июля 2020 г. N 985)
- Правила по охране труда при строительстве, реконструкции и ремонте.Утверждены приказом Минтруда России №883н от 11 декабря 2020 г. (действуют с 01.01.2021)
- Правила по охране труда в строительстве. Утверждены Приказом Минтруда России N 336н от 1 июня 2015 года (действуют до 01.01.2021)
II группа:
- СП 45.13330.2012 Земляные сооружения, основания и фундаменты. Актуализированная редакция СНиП 3.02.01-87. (действующий и обязательный до 01 августа 2020 к применению согласно постановлению Правительства РФ от 26 декабря 2014 г. N 1521
- СНиП 12-04-2002 «Безопасность труда в строительстве. Часть 2. Строительное производство» (рекомендательный)
Выделим требований приведенных в данных документах, которые касаются непосредственно величины крутизны откосов.
I группа нормативных документов
Согласно СП 45.13330.2012 Земляные сооружения, основания и фундаменты. Актуализированная редакция СНиП 3.02.01-87
6.1.10 Наибольшую крутизну откосов траншей, котлованов и других временных выемок, устраиваемых без крепления в грунтах, находящихся выше уровня подземных вод (с учетом капиллярного поднятия воды по 6.1.11), в том числе в грунтах, осушенных с помощью искусственного водопонижения, следует принимать в соответствии с требованиями, обеспечивающими безопасность труда в строительстве.
При высоте откосов более 5 м в однородных грунтах их крутизну допускается принимать по графикам приложения В. Крутизна откосов должна обеспечивать безопасность труда в строительстве. Крутизна откосов выемок, разрабатываемых в скальных грунтах с применением взрывных работ, должна быть установлена в проекте.
6.1.11 При наличии в период производства работ подземных вод в пределах выемок или вблизи их дна мокрыми следует считать не только грунты, расположенные ниже уровня грунтовых вод, но и грунты, расположенные выше этого уровня на величину капиллярного поднятия, которую следует принимать:
— 0,3 м — для крупных, средней крупности и мелких песков;
— 0,5 м — для пылеватых песков и супесей;
— 1,0 м — для суглинков и глин.
6.1.12 Крутизну откосов подводных и обводненных береговых траншей, а также траншей, разрабатываемых на болотах, следует принимать в соответствии с требованиями СП 86.13330.
6.1.13 В проекте должна быть установлена крутизна откосов грунтовых карьеров, резервов и постоянных отвалов после окончания земляных работ в зависимости от направлений рекультивации и способов закрепления поверхности откосов.
6.1.14 Максимальную глубину выемок с вертикальными незакрепленными стенками следует принимать в соответствии с требованиями, обеспечивающими безопасность труда в строительстве.
6.1.15 Наибольшую высоту вертикальных стенок выемок в мерзлых грунтах, кроме сыпучемерзлых, при среднесуточной температуре воздуха ниже минус 2°С допускается увеличивать на величину глубины промерзания грунта, но не более чем 2 м.
6.1.16 В проекте должна быть установлена необходимость временного крепления вертикальных стенок траншей и котлованов в зависимости от глубины выемки, вида и состояния грунта, гидрогеологических условий, величины и характера временных нагрузок на бровке и других местных условий.
6.1.17 Число и размеры уступов и местных углублений в пределах выемки должны быть минимальными и обеспечивать механизированную зачистку основания и технологичность возведения сооружения. Отношение высоты уступа к его основанию установлено проектом, но должно быть не менее: 1:2 — в глинистых грунтах, 1:3 — в песчаных грунтах.
Согласно новых Правил по охране труда в строительстве (приказ Минтруда России №883н от 11.12.2020 г.) действующих с 01.01.
2021п.129. При производстве работ нахождение работников в выемках с вертикальными стенками без крепления в песчаных, пылевато-глинистых и талых грунтах допускается при расположении этих выемок выше уровня грунтовых вод, при отсутствии в непосредственной близости от них подземных сооружений, а также на глубине не более:
- в неслежавшихся насыпных и природного сложения песчаных
грунтах — 1,0 м; - в супесях — 1,25 м;
- в суглинках и глинах — 1,5 м.
Допускается увеличение указанной глубины расположения выемок в мерзлых грунтах, кроме сыпучемерзлых, на величину глубины промерзания грунта, но не более чем на 2 м, при среднесуточной температуре воздуха ниже минус 2°C.
Производство работ, связанных с нахождением работников в котлованах, траншеях и выемках с откосами без креплений в нескальных грунтах выше уровня грунтовых вод (с учетом капиллярного поднятия) или в грунтах, осушенных с помощью искусственного водопонижения, допускается при глубине выемки и крутизне откосов согласно организационно-технологической документации с учетом крутизны откосов в зависимости от вида грунта, предусмотренной приложением № 4 к Правилам. При напластовании различных видов грунта крутизну откосов устанавливают по наименее устойчивому виду грунта от обрушения откоса.
п.130. Крутизна откосов выемок глубиной более 5 м, а также глубиной
менее 5 м при гидрологических условиях и определенных видах грунтов, а также выемок, разработанных в зимнее время, при наступлении оттепели и откосов, подвергающихся увлажнению, должны устанавливаться организационно-технологической документацией на строительное производство.
п.132. Перед допуском работников в выемки глубиной более 1,3 м работником, ответственным за обеспечение безопасного производства работ, должны быть проверены состояние откосов, а также надежность крепления стенок выемки.
Валуны и камни, а также отслоения грунта, обнаруженные на откосах, должны быть удалены.
п.133. Допуск работников в выемки с откосами, подвергшимися увлажнению, допускается после осмотра работником, ответственным за обеспечение безопасного производства работ, откосов и состояния неустойчивого грунта в местах, в которых обнаружены «козырьки» или трещины (отслоения).
п.134. Выемки, разработанные в зимнее время, при наступлении оттепели должны быть осмотрены, а по результатам осмотра должны быть приняты меры к обеспечению устойчивости откосов и креплений.
п.135. Разработка роторными и траншейными экскаваторами в связных грунтах (суглинках и глинах) выемок с вертикальными стенками без крепления допускается на глубину не более 3 м. В местах, в которых требуется пребывание работников, должны устраиваться крепления или разрабатываться откосы.
Приложение № 4
к Правилам по охране труда при строительстве, реконструкции и ремонте, утвержденным приказом Министерства труда и социальной защиты Российской Федерации
от «__» _________ 20___ г. № ____
Крутизна откосов в зависимости от вида грунта
№ п/п | Виды грунтов | Крутизна откоса (отношение его высоты к заложению) при глубине выемки, м (не более) | ||
1,5 | 3,0 | 5,0 | ||
1 | Насыпные неслежавшиеся | 1:0,67 | 1:1 | 1:1,25 |
2 | Песчаные | 1:0,5 | 1:1 | 1:1 |
3 | Супесь | 1:0,25 | 1:0,67 | 1:0,85 |
4 | Суглинок | 1:0 | 1:0,5 | 1:0,75 |
5 | Глина | 1:0 | 1:0,25 | 1:0,5 |
6 | Лессовые | 1:0,25 | 1:0,67 | 1:0,85 |
Согласно старых Правил по охране труда в строительстве (приказ Минтруда России от 1.
06.15 года N 336н) действующих до 01.01.2021156. При производстве работ нахождение работников в выемках с вертикальными стенками без крепления в песчаных, пылевато-глинистых и талых грунтах допускается при расположении этих выемок выше уровня грунтовых вод, при отсутствии вблизи них подземных сооружений, а также на глубине не более:
- 1) в неслежавшихся насыпных и природного сложения песчаных грунтах — 1,0 м;
- 2) в супесях — 1,25 м;
- 3) в суглинках и глинах — 1,5 м.
Допускается увеличение указанной глубины расположения выемок в мерзлых грунтах, кроме сыпучемерзлых, на величину глубины промерзания грунта, но не более чем на 2 м, при среднесуточной температуре воздуха ниже минус 2°С.
157. Производство работ, связанных с нахождением работников в котлованах, траншеях и выемках с откосами без креплений в нескальных грунтах выше уровня грунтовых вод (с учетом капиллярного поднятия) или в грунтах, осушенных с помощью искусственного водопонижения, допускается при глубине выемки и крутизне откосов согласно организационно-технологической документации с учетом крутизны откосов в зависимости от вида грунта, предусмотренной приложением N 4 к Правилам.
158. Крутизна откосов выемок глубиной более 5 м, а также глубиной менее 5 м при гидрологических условиях и определенных видах грунтов, а также выемок, разработанных в зимнее время, при наступлении оттепели и откосов, подвергающихся увлажнению, должны устанавливаться организационно-технологической документацией на строительное производство.
159. При установке креплений верхняя часть их должна выступать над бровкой выемки не менее чем на 15 см.
160. Перед допуском работников в выемки глубиной более 1,3 м работником, ответственным за обеспечение безопасного производства работ, должны быть проверены состояние откосов, а также надежность крепления стенок выемки.
Валуны и камни, а также отслоения грунта, обнаруженные на откосах, должны быть удалены.
161. Допуск работников в выемки с откосами, подвергшимися увлажнению, допускается после тщательного осмотра работником, ответственным за обеспечение безопасного производства работ, откосов и состояния неустойчивого грунта в местах, где обнаружены «козырьки» или трещины (отслоения).
162. Выемки, разработанные в зимнее время, при наступлении оттепели должны быть осмотрены, а по результатам осмотра должны быть приняты меры к обеспечению устойчивости откосов и креплений.
163. Разработка роторными и траншейными экскаваторами в связных грунтах (суглинках и глинах) выемок с вертикальными стенками без крепления допускается на глубину не более 3 м. В местах, где требуется пребывание работников, должны устраиваться крепления или разрабатываться откосы.
При извлечении грунта из выемок с помощью бадей необходимо устраивать защитные навесы-козырьки для защиты работников в выемке.
164. Устанавливать крепления необходимо в направлении сверху вниз по мере разработки выемки на глубину не более 0,5 м.
165. Разрабатывать грунт в выемках «подкопом» не допускается. Извлеченный из выемки грунт необходимо размещать на расстоянии не менее 0,5 м от бровки этой выемки.
Приложение N 4. Крутизна откосов в зависимости от вида грунта
N п/п | Виды грунтов | Крутизна откоса (отношение его высоты к заложению) при глубине выемки, м (не более) | ||
1,5 | 3,0 | 5,0 | ||
1 | Насыпные неслежавшиеся | 1:0,67 | 1:1 | 1:1,25 |
2 | Песчаные | 1:0,5 | 1:1 | 1:1 |
3 | Супесь | 1:0,25 | 1:0,67 | 1:0,85 |
4 | Суглинок | 1:0 | 1:0,5 | 1:0,75 |
5 | Глина | 1:0 | 1:0,25 | 1:0,5 |
6 | Лессовые | 1:0 | 1:0,5 | 1:0,5 |
Примечания:
При напластовании различных видов грунта крутизну откосов устанавливают по наименее устойчивому виду грунта от обрушения откоса.
II группа нормативных документов
Согласно СП 45.13330.2012 Земляные сооружения, основания и фундаменты. Актуализированная редакция СНиП 3.02.01-87:
6.1.10 Наибольшую крутизну откосов траншей, котлованов и других временных выемок, устраиваемых без крепления в грунтах, находящихся выше уровня подземных вод (с учетом капиллярного поднятия воды по 6.1.11), в том числе в грунтах, осушенных с помощью искусственного водопонижения, следует принимать в соответствии с требованиями СНиП 12-04.
При высоте откосов более 5 м в однородных грунтах их крутизну допускается принимать по графикам приложения В, но не круче указанных в СНиП 12-04 для глубины выемки 5 м и во всех грунтах (включая скальные) не более 80°. Крутизна откосов выемок, разрабатываемых в скальных грунтах с применением взрывных работ, должна быть установлена в проекте.
6.1.11 При наличии в период производства работ подземных вод в пределах выемок или вблизи их дна мокрыми следует считать не только грунты, расположенные ниже уровня грунтовых вод, но и грунты, расположенные выше этого уровня на величину капиллярного поднятия, которую следует принимать:
0,3 м — для крупных, средней крупности и мелких песков;
0,5 м — для пылеватых песков и супесей;
1,0 м — для суглинков и глин.
6.1.12 Крутизну откосов подводных и обводненных береговых траншей, а также траншей, разрабатываемых на болотах, следует принимать в соответствии с требованиями СП 86.13330.
6.1.13 В проекте должна быть установлена крутизна откосов грунтовых карьеров, резервов и постоянных отвалов после окончания земляных работ в зависимости от направлений рекультивации и способов закрепления поверхности откосов.
6.1.14 Максимальную глубину выемок с вертикальными незакрепленными стенками следует принимать в соответствии с требованиями СНиП 12-04.
6.1.15 Наибольшую высоту вертикальных стенок выемок в мерзлых грунтах, кроме сыпучемерзлых, при среднесуточной температуре воздуха ниже минус 2 °С допускается увеличивать по сравнению с установленной СНиП 12-04 на величину глубины промерзания грунта, но не более чем до 2 м.
6.1.16 В проекте должна быть установлена необходимость временного крепления вертикальных стенок траншей и котлованов в зависимости от глубины выемки, вида и состояния грунта, гидрогеологических условий, величины и характера временных нагрузок на бровке и других местных условий.
6.1.17 Число и размеры уступов и местных углублений в пределах выемки должны быть минимальными и обеспечивать механизированную зачистку основания и технологичность возведения сооружения. Отношение высоты уступа к его основанию устанавливается проектом, но должно быть не менее 1:2 — в глинистых грунтах, 1:3 — в песчаных грунтах.
Согласно СНиП 12-04-2002 «Безопасность труда в строительстве. Часть 2. Строительное производство»:
5.2.4. Производство работ, связанных с нахождением работников в выемках с вертикальными стенками без крепления в песчаных, пылевато-глинистых и талых грунтах выше уровня грунтовых вод и при отсутствии вблизи подземных сооружений, допускается при их глубине не более, м:
- 1,0 — в неслежавшихся насыпных и природного сложения песчаных грунтах;
- 1,25 — в супесях;
- 1,5 — в суглинках и глинах.
5.2.5. При среднесуточной температуре воздуха ниже минус 2°C допускается увеличение наибольшей глубины вертикальных стенок выемок в мерзлых грунтах, кроме сыпучемерзлых, по сравнению с установленной в 5. 2.4 на величину глубины промерзания грунта, но не более чем до 2 м.
5.2.6. Производство работ, связанных с нахождением работников в выемках с откосами без креплений в насыпных, песчаных и пылевато-глинистых грунтах выше уровня грунтовых вод (с учетом капиллярного поднятия) или грунтах, осушенных с помощью искусственного водопонижения, допускается при глубине выемки и крутизне откосов, указанных в таблице 1.
Таблица 1
N | Виды грунтов | Крутизна откоса (отношение его высоты к заложению) при глубине выемки, м, не более | ||
1,5 | 3,0 | 5,0 | ||
1. | Насыпные | 1:0,67 | 1:1 | 1:1,25 |
2. | Песчаные | 1:0,5 | 1:1 | 1:1 |
3. | Супесь | 1:0,25 | 1:0,67 | 1:0,85 |
4. | Суглинок | 1:0 | 1:0,5 | 1:0,75 |
5. | Глина | 1:0 | 1:0,25 | 1:0,5 |
6. | Лессовые | 1:0 | 1:0,5 | 1:0,5 |
Примечания:
1. При напластовании различных видов грунта крутизну откосов назначают по наименее устойчивому виду от обрушения откоса;
2. К неслежавшимся насыпным относятся грунты с давностью отсыпки до двух лет для песчаных; до пяти лет — для пылевато-глинистых грунтов.
5.2.7. Крутизна откосов выемок глубиной более 5 м во всех случаях и глубиной менее 5 м при гидрологических условиях и видах грунтов, не предусмотренных п.5.2.12, а также откосов, подвергающихся увлажнению, должны устанавливаться проектом.
5.2.8. Конструкция крепления вертикальных стенок выемок глубиной до 3 м в грунтах естественной влажности должна быть, как правило, выполнена по типовым проектам. При большей глубине, а также сложных гидрогеологических условиях крепление должно быть выполнено по индивидуальному проекту.
5.2.9. При установке креплений верхняя часть их должна выступать над бровкой выемки не менее чем на 15 см.
5.2.10. Перед допуском работников в выемки глубиной более 1,3 м ответственным лицом должно быть проверено состояние откосов, а также надежность крепления стенок выемки.
Валуны и камни, а также отслоения грунта, обнаруженные на откосах, должны быть удалены.
5.2.11. Допуск работников в выемки с откосами, подвергшимися увлажнению, разрешается только после тщательного осмотра лицом, ответственным за обеспечение безопасности производства работ, состояние грунта откосов и обрушение неустойчивого грунта в местах, где обнаружены «козырьки» или трещины (отслоения).
5.2.12. Выемки, разработанные в зимнее время, при наступлении оттепели должны быть осмотрены, а по результатам осмотра должны быть приняты меры к обеспечению устойчивости откосов и креплений.
5.2.13. Разработка роторными и траншейными экскаваторами в связных грунтах (суглинках и глинах) выемок с вертикальными стенками без крепления допускается на глубину не более 3 м. В местах, где требуется пребывание работников, должны устраиваться крепления или разрабатываться откосы.
При извлечении грунта из выемок с помощью бадей необходимо устраивать защитные навесы-козырьки для защиты работающих в выемке.
Высотные работы (полный перечень)
Противопожарные требования для строительных площадок
Головоломка Судоку
Sudoku — популярная игра-головоломка в газетах и мобильных приложениях. Доска судоку представляет собой сетку 9 × 9, в которой игрок должен разместить цифры от 1 до 9 один раз и только один раз в каждой строке, столбце и подсетке 3 × 3. Игра начинается с нескольких ячеек, уже заполненных цифрами, которые называются заданными . Правильно составленная головоломка судоку будет иметь только одно возможное правильное решение.
При запуске sudoku.py вывод будет выглядеть так:
Головоломка судоку, Эл Свейгарт [email protected] --снип-- А Б В Г Д Е Ж З И 1 . . . | . . . | . . . 2 . 7 9 | . 5 . | 1 8 . 3 8 . . | . . . | . . 7 ------+-------+------ 4 . . 7 | 3 . 6 | 8 . . 5 4 5 . | 7 . 8 | . 9 6 6 . . 3 | 5 . 2 | 7 . . ------+-------+------ 7 7 . . | . . . | . . 5 8 . 1 6 | . 3 . | 4 2 . 9 . . . | . . . | . . . Введите ход или СБРОС, НОВЫЙ, ОТМЕНА, ОРИГИНАЛ или ВЫХОД: (Например, ход выглядит как «B4 9".) --снип--
Объекты класса SudokuGrid
— это структуры данных, представляющие сетку судоку. Вы можете вызвать их методы, чтобы внести изменения в сетку или получить информацию о ней. Например, метод makeMove()
помещает число в сетку, метод resetGrid()
восстанавливает сетку в исходное состояние, а isSolved()
возвращает True
, если все числа решения были размещены. на сетке.
Основная часть программы, начинающаяся со строки 141, использует объект SudokuGrid
и его методы для этой игры, но вы также можете скопировать и вставить этот класс в другие созданные вами программы судоку, чтобы повторно использовать его функциональные возможности.
1. """Головоломка Судоку, Эл Свейгарт [email protected] 2. Классическая головоломка с размещением чисел 9x9. 3. Больше информации на https://en.wikipedia.org/wiki/Sudoku. 4. Этот код доступен по адресу https://nostarch.com/big-book-small-python-programming. 5. Тэги: большие, игровые, объектно-ориентированные, головоломки""" 6. 7. импортировать копию, случайную, системную 8. 9. # Для этой игры требуется файл sudokupuzzle.txt, содержащий головоломки. 10. # Загрузите его с https://inventwithpython.com/sudokupuzzles.txt 11. # Вот пример содержимого этого файла: 12. # ..3.2.6..9..3.5..1..18,64....81,29..7.......8..67,82....26,95..8..2,3 ..9..5.1.3.. 13. № 2...8,3...6..7..84,3,5..2,9...1,54,8........4,27,6...3,1...7,4,72 ..4..6...4.1...3 14. # ......9,7...42,18....7,5.261..9,4....5.....4....5,7..992,1,8....34,59 ...5.7...... 15. № .3..5..4...8.1.5..46.....12.7.5.2.8....6.3....4.1.9.3.25.....98..1.2.6...8..6..2. 16. 17. # Настраиваем константы: 18. EMPTY_SPACE = '.' 19. GRID_LENGTH = 9 20. ЯЩИК_ДЛИНА = 3 21. FULL_GRID_SIZE = GRID_LENGTH * GRID_LENGTH 22. 23. 24. класс SudokuGrid: 25. def __init__(self, originalSetup): 26. # originalSetup — это строка из 81 символа для головоломки 27. # setup, с цифрами и точками (для пробелов). 28. # См. https://inventwithpython.com/sudokupuzzles.txt 29. self.originalSetup = оригинальная установка 30. 31. # Состояние сетки судоку представлено словарем 32. # с ключами (x, y) и значениями числа (в виде строки) at 33. # это пространство. 34. self.grid = {} 35. self.resetGrid() # Устанавливаем исходное состояние сетки. 36. self.moves = [] # Отслеживает каждое движение для функции отмены. 37. 38. деф resetGrid(я): 39. """Сбросить состояние сетки, отслеживаемой self.grid, на 40. состояние в self.originalSetup.""" 41. для x в диапазоне (1, GRID_LENGTH + 1): 42. для y в диапазоне (1, GRID_LENGTH + 1): 43. self.grid[(x, y)] = EMPTY_SPACE 44. 45. утверждать len(self.originalSetup) == FULL_GRID_SIZE 46. i = 0 # i идет от 0 до 80 47. y = 0 # y изменяется от 0 до 8 48. пока я < FULL_GRID_SIZE: 49. для x в диапазоне (GRID_LENGTH): 50. self.grid[(x, y)] = self.originalSetup[i] 51. я += 1 52. у += 1 53. 54. def makeMove (я, столбец, строка, число): 55. """Поместите число в столбце (букву от A до I) и строку 56. (целое число от 1 до 9) в сетке.""" 57. x = 'ABCDEFGHI'.find(column) # Преобразовать это в целое число. 58. у = int(строка) - 1 59. 60. # Проверяем, делается ли ход на "заданное" число: 61. если self.originalSetup[y * GRID_LENGTH + x] != EMPTY_SPACE: 62. Вернуть Ложь 63. 64. self.grid[(x, y)] = число # Поместите это число в сетку. 65. 66. # Нам нужно сохранить отдельную копию объекта словаря: 67. self.moves.append(copy.copy(self.grid)) 68. вернуть Истина 69. 70. деф отменить(сам): 71. """Установите текущее состояние сетки на предыдущее состояние в 72. Список самодвижений.""" 73. если self.moves == []: 74. return # В self.moves нет состояний, так что ничего не делайте. 75. 76. self.moves.pop() # Удалить текущее состояние. 77. 78. если self.moves == []: 79. self.resetGrid() 80. иначе: 81. # установить сетку на последний ход. 82. self.grid = copy.copy(self.moves[-1]) 83. 84. Отображение по умолчанию (я): 85. """Отображение текущего состояния сетки на экране.""" 86. print(' A B C D E F G H I') # Отображение меток столбцов. 87. для y в диапазоне (GRID_LENGTH): 88. для x в диапазоне (GRID_LENGTH): 89. если х == 0: 90. # Показать метку строки: 91. print(str(y + 1) + ' ', end='') 92. 93. print(self.grid[(x, y)] + ' ', end='') 94. если х == 2 или х == 5: 95. # Отображение вертикальной линии: 96. печать('| ', конец='') 97. print() # Напечатать новую строку. 98. 99. если у == 2 или у == 5: 100. # Отображение горизонтальной линии: 101. печать(' ------+-------+------') 102. 103. def _isCompleteSetOfNumbers(я, числа): 104. """Возвращает True, если числа содержат цифры от 1 до 9.""" 105. вернуть отсортированные (числа) == список ('123456789') 106. 107. Дефрешён(сам): 108. """Возвращает True, если текущая сетка находится в решенном состоянии.""" 109. # Проверяем каждую строку: 110. для строки в диапазоне (GRID_LENGTH): 111. Количество строк = [] 112. для x в диапазоне (GRID_LENGTH): 113. число = self.grid[(x, строка)] 114. rowNumbers.append(число) 115. если не self._isCompleteSetOfNumbers(rowNumbers): 116. Вернуть Ложь 117. 118. # Проверьте каждый столбец: 119. для столбца в диапазоне (GRID_LENGTH): 120. Колонки = [] 121. для y в диапазоне (GRID_LENGTH): 122. число = self.grid[(столбец, у)] 123. columnNumbers.append(число) 124. если не self._isCompleteSetOfNumbers(columnNumbers): 125. Вернуть Ложь 126. 127. # Отметьте каждое поле: 128. для boxx в (0, 3, 6): 129. для квадратного в (0, 3, 6): 130. ОкноЧисла = [] 131. для x в диапазоне (BOX_LENGTH): 132. для y в диапазоне (BOX_LENGTH): 133. число = self.grid[(boxx + x, boxy + y)] 134. boxNumbers.append(число) 135. если не self._isCompleteSetOfNumbers(boxNumbers): 136. Вернуть Ложь 137. 138. вернуть Истина 139. 140. 141. print('''Головоломка судоку, Эл Свейгарт [email protected] 142. 143. Судоку — логическая игра-головоломка с размещением чисел. Сетка судоку представляет собой 9x9 144. сетка чисел. Постарайтесь расположить числа в сетке так, чтобы каждая строка 145. столбец, а в поле 3х3 цифры от 1 до 9 встречаются один раз и только один раз. 146. 147. Например, вот начальная сетка судоку и ее решенная форма: 148. 149. 5 3 . | . 7 . | . . . 5 3 4 | 6 7 8 | 9 1 2 150. 6 . . | 1 95 | . . . 6 7 2 | 1 9 5 | 3 4 8 151. . 9 8 | . . . | . 6 . 1 9 8 | 3 4 2 | 5 6 7 152. ------+-------+------ ------+-------+------ 153. 8 . . | . 6 . | . . 3 8 5 9 | 7 6 1 | 4 2 3 154. 4 . . | 8 . 3 | . . 1 --> 4 2 6 | 8 5 3 | 7 9 1 155. 7 . . | . 2 . | . . 6 7 1 3 | 9 2 4 | 8 5 6 156. ------+-------+------ ------+-------+------ 157. . 6 . | . . . | 2 8 . 9 6 1 | 5 3 7 | 2 8 4 158. . . . | 4 1 9| . . 5 2 8 7 | 4 1 9 | 6 3 5 159. . . . | . 8 . | . 7 9 3 4 5 | 2 8 6 | 1 7 9 160. ''') 161. input('Нажмите Enter, чтобы начать...') 162. 163. 164. # Загрузите файл sudokupuzzles.txt: 165. с open('sudokupuzzles.txt') как файл головоломки: 166. головоломки = PuzzleFile.readlines() 167. 168. # Удалите символы новой строки в конце каждой головоломки: 169. для i, головоломка в перечислить (головоломки): 170. пазлы[i] = пазл.strip() 171. 172. grid = SudokuGrid(random.choice(головоломки)) 173. 174. while True: # Основной игровой цикл. 175. сетка.отображение() 176. 177. # Проверить, решена ли головоломка. 178. если grid.isSolved(): 179. print('Поздравляем! Вы решили головоломку!') 180. print('Спасибо за игру!') 181. sys.exit() 182. 183. # Получить действие игрока: 184. while True: # Продолжайте спрашивать, пока игрок не выполнит допустимое действие. 185. print() # Напечатать новую строку. 186. print('Введите ход или RESET, NEW, UNDO, ORIGINAL или QUIT:') 187. print('(Например, ход выглядит как "B4 9".)') 188. 189. действие = ввод('> ').upper().strip() 190. 191. если len(action) > 0 и action[0] in ('R', 'N', 'U', 'O', 'Q'): 192. # Игрок ввел правильное действие. 193. перерыв 194. 195. если len(action.split()) == 2: 196. пробел, число = action.split() 197. если len(пробел) != 2: 198. продолжить 199. 200. столбец, строка = пробел 201. если столбца нет в списке ('ABCDEFGHI'): 202. print('Нет столбца', столбец) 203. продолжить 204. если не row.isdecimal() или нет (1 <= int(row) <= 9): 205. print('Нет строки', строка) 206. продолжить 207. если нет (1 <= int(number) <= 9): 208. print('Выберите число от 1 до 9, а не ', число) 209. продолжить 210. break # Игрок сделал допустимый ход. 211. 212. print() # Напечатать новую строку. 213. 214. если action.startswith('R'): 215. # Сброс сетки: 216. сетка.resetGrid() 217. продолжить 218. 219. если action.startswith('N'): 220. # Получить новую головоломку: 221. сетка = SudokuGrid(random.choice(головоломки)) 222. продолжить 223. 224. если action.startswith('U'): 225. # Отменить последний ход: 226. сетка.отменить() 227. продолжить 228. 229. если action.startswith('O'): 230. # Просмотр исходных номеров: 231. originalGrid = SudokuGrid(grid.originalSetup) 232. print('Исходная сетка выглядела так:') 233. ОригиналGrid.display() 234. input('Нажмите Enter, чтобы продолжить...') 235. 236. если action.startswith('Q'): 237. # Выйти из игры. 238. print('Спасибо за игру!') 239. sys.exit() 240. 241. # Обработать ход, выбранный игроком. 242. if grid.makeMove(column, row, number) == False: 243. print('Вы не можете перезаписать номера исходной сетки.') 244. print('Введите ORIGINAL, чтобы просмотреть исходную сетку. ') 245. input('Нажмите Enter, чтобы продолжить...')
Попробуйте найти ответы на следующие вопросы. Поэкспериментируйте с некоторыми модификациями кода и перезапустите программу, чтобы увидеть, какой эффект произведут изменения.
- Какая ошибка возникает, если удалить или переименовать файл sudokupuzzles.txt и запустить программу?
- Что произойдет, если изменить
str(y + 1)
в строке 91 наstr(y)
? - Что произойдет, если вы замените
, если y == 2 или y == 5:
в строке 99, на, если y == 1 или y == 6:
?
Крестики-нолики
Крестики-нолики Предыдущая: Трехкарточный Монте | Далее: Головоломка Ханойской башниКрестики-нолики — классическая игра с карандашом и бумагой, в которую играют на сетке 3 × 3. Игроки по очереди ставят свои значки X или O, стараясь собрать три в ряд. Большинство игр в крестики-нолики заканчиваются вничью, но можно перехитрить противника, если он не будет осторожен.
При запуске tictactoe.py вывод будет выглядеть так:
Добро пожаловать в крестики-нолики! | | 1 2 3 -+-+- | | 4 5 6 -+-+- | | 7 8 9Каков ход X? (1-9) > 1 Х| | 1 2 3 -+-+- | | 4 5 6 -+-+- | | 7 8 9 Какой ход у О? (1-9) --снип-- Х|О|Х 1 2 3 -+-+- Х|О|О 4 5 6 -+-+- О|Х|Х 7 8 9 Игра ничья! Спасибо за игру!
Для представления крестиков-ноликов в этой программе мы используем словарь с ключами '1' от
до '9'
для пробелов на доске. Пронумерованные ячейки расположены так же, как и клавиатура телефона. Значения в этом словаре — строка 'X'
или 'O'
для отметки игрока и ''
для пустого места.
1. """Крестики-нолики, Эл Свейгарт [email protected] 2. Классическая настольная игра. 3. Этот код доступен по адресу https://nostarch. com/big-book-small-python-programming. 4. Теги: короткая, настольная игра, игра, игра на двоих""" 5. 6. ALL_SPACES = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] 7. X, O, BLANK = 'X', 'O', ' ' # Константы для строковых значений. 8. 9. 10. по умолчанию(): 11. print('Добро пожаловать в крестики-нолики!') 12. gameBoard = getBlankBoard() # Создать настольный словарь TTT. 13. currentPlayer, nextPlayer = X, первым идет O#X, следующим идет O. 14. 15. while True: # Основной игровой цикл. 16. # Выводим плату на экран: 17. print(getBoardStr(gameBoard)) 18. 19. # Продолжайте спрашивать игрока, пока он не введет число от 1 до 9.: 20. двигаться = нет 21. пока не isValidSpace(gameBoard, move): 22. print('Какой ход у {}\? (1-9)'.format(currentPlayer)) 23. двигаться = ввод('> ') 24. updateBoard(gameBoard, move, currentPlayer) # Сделать ход. 25. 26. # Проверяем, не закончилась ли игра: 27. if isWinner(gameBoard, currentPlayer): # Проверить победителя. 28. печать (getBoardStr (gameBoard)) 29. print(currentPlayer + 'выиграл игру!') 30. перерыв 31. elif isBoardFull(gameBoard): # Проверка на ничью. 32. печать (getBoardStr (gameBoard)) 33. print('Ничья!') 34. перерыв 35. # Переключатель переходит к следующему игроку: 36. текущий игрок, следующий игрок = следующий игрок, текущий игрок 37. print('Спасибо за игру!') 38. 39. 40. деф getBlankBoard(): 41. """Создайте новую пустую доску для игры в крестики-нолики.""" 42. # Карта пробелов: 1|2|3 43. # -+-+- 44. № 4|5|6 45. # -+-+- 46. № 7|8|9 47. # Клавиши от 1 до 9, значения X, O или BLANK: 48. доска = {} 49. для пробела в ALL_SPACES: 50. board[space] = BLANK # Все пробелы начинаются как пустые. 51. обратная доска 52. 53. 54. деф getBoardStr(доска): 55. """Вернуть текстовое представление доски.""" 56. возврат ''' 57. {}|{}|{} 1 2 3 58. -+-+- 59. {}|{}|{} 4 5 6 60. -+-+- 61. {}|{}|{} 7 8 9'''.format(board['1'], board['2'], board['3'], 62. доска['4'], доска['5'], доска['6'], 63. доска ['7'], доска ['8'], доска ['9']) 64. 65. def isValidSpace(доска, пробел): 66. """Возвращает True, если пробел на доске является допустимым номером пробела. 67. и место пустое.""" 68. вернуть пробел в ALL_SPACES и board[space] == BLANK 69. 70. 71. def isWinner(доска, игрок): 72. """Вернуть True, если игрок стал победителем на этой TTTBoard.""" 73. # Здесь использованы более короткие имена переменных для удобства чтения: 74. б, р = доска, игрок 75. # Проверьте наличие 3 меток в 3 рядах, 3 столбцах и 2 диагоналях. 76. return ((b['1'] == b['2'] == b['3'] == p) или # Поверху 77. (b['4'] == b['5'] == b['6'] == p) или # Через середину 78. (b['7'] == b['8'] == b['9'] == p) или # По нижнему краю 79. (b['1'] == b['4'] == b['7'] == p) или # Вниз влево 80. (b['2'] == b['5'] == b['8'] == p) или # Вниз посередине 81. (b['3'] == b['6'] == b['9'] == p) или # Вниз вправо 82. (b['3'] == b['5'] == b['7'] == p) или # Диагональ 83.