about summary refs log tree commit diff stats
path: root/ext/wittle_generator
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2023-11-18 13:54:21 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2023-11-18 13:54:21 -0500
commitb21f37b598bdf2bb901423f11b7708d81f99966b (patch)
tree320e1fd5d238346dcd2ec168c8088688b44992ec /ext/wittle_generator
parent8cd389750c4cffd6a2552f6ab28a274410f69c34 (diff)
downloadwittle-b21f37b598bdf2bb901423f11b7708d81f99966b.tar.gz
wittle-b21f37b598bdf2bb901423f11b7708d81f99966b.tar.bz2
wittle-b21f37b598bdf2bb901423f11b7708d81f99966b.zip
centre-start polys, more puzzles
Diffstat (limited to 'ext/wittle_generator')
-rw-r--r--ext/wittle_generator/Panel.cpp2
-rw-r--r--ext/wittle_generator/wittle_generator.cpp364
2 files changed, 363 insertions, 3 deletions
diff --git a/ext/wittle_generator/Panel.cpp b/ext/wittle_generator/Panel.cpp index 3279943..e61192c 100644 --- a/ext/wittle_generator/Panel.cpp +++ b/ext/wittle_generator/Panel.cpp
@@ -221,7 +221,7 @@ std::string Panel::Write() {
221 serializer.writeInt(0); 221 serializer.writeInt(0);
222 222
223 char settings = Serializer::NegationsCancelNegations | 223 char settings = Serializer::NegationsCancelNegations |
224 Serializer::PrecisePolyominos | Serializer::FlashForErrors; 224 Serializer::ShapelessZeroPoly | Serializer::FlashForErrors;
225 if (_invisible_symmetry) { 225 if (_invisible_symmetry) {
226 settings |= Serializer::InvisibleSymmetry; 226 settings |= Serializer::InvisibleSymmetry;
227 } 227 }
diff --git a/ext/wittle_generator/wittle_generator.cpp b/ext/wittle_generator/wittle_generator.cpp index 77096c7..1c7abfc 100644 --- a/ext/wittle_generator/wittle_generator.cpp +++ b/ext/wittle_generator/wittle_generator.cpp
@@ -978,6 +978,18 @@ Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) {
978 generator.generate( 978 generator.generate(
979 7, 7, {{{Decoration::Poly | Decoration::Color::Yellow, 5}}}); 979 7, 7, {{{Decoration::Poly | Decoration::Color::Yellow, 5}}});
980 }, 980 },
981 [](Generate& generator) {
982 generator.setFlag(Generate::TreehouseLayout);
983 generator.generate(
984 4, 4,
985 {{{Decoration::Star | Decoration::Color::Black, 1},
986 {Decoration::Star | Decoration::Color::White, 2},
987 {Decoration::Stone | Decoration::Color::Black, 2},
988 {Decoration::Stone | Decoration::Color::White, 1},
989 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Orange,
990 1},
991 {Decoration::Poly | Decoration::Orange, 1}}});
992 },
981 }; 993 };
982 994
983 Generate generator; 995 Generate generator;
@@ -1209,7 +1221,6 @@ Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) {
1209 {Decoration::Stone | Decoration::Color::White, 2}}}); 1221 {Decoration::Stone | Decoration::Color::White, 2}}});
1210 }, 1222 },
1211 [](Generate& generator) { 1223 [](Generate& generator) {
1212 generator.setFlag(Generate::StartEdgeOnly);
1213 generator.setFlag(Generate::BigShapes); 1224 generator.setFlag(Generate::BigShapes);
1214 generator.setSymbol(Decoration::Exit, 5 * 2, 0); 1225 generator.setSymbol(Decoration::Exit, 5 * 2, 0);
1215 generator.generate(5, 5, 1226 generator.generate(5, 5,
@@ -1221,7 +1232,6 @@ Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) {
1221 {Decoration::Start, 1}}}); 1232 {Decoration::Start, 1}}});
1222 }, 1233 },
1223 [](Generate& generator) { 1234 [](Generate& generator) {
1224 generator.setFlag(Generate::StartEdgeOnly);
1225 generator.setFlag(Generate::BigShapes); 1235 generator.setFlag(Generate::BigShapes);
1226 generator.setSymbol(Decoration::Exit, 5 * 2, 0); 1236 generator.setSymbol(Decoration::Exit, 5 * 2, 0);
1227 generator.generate(5, 5, 1237 generator.generate(5, 5,
@@ -1548,6 +1558,356 @@ Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) {
1548 {Decoration::Stone | Decoration::Color::Black, 2}, 1558 {Decoration::Stone | Decoration::Color::Black, 2},
1549 {Decoration::Stone | Decoration::Color::White, 2}}}); 1559 {Decoration::Stone | Decoration::Color::White, 2}}});
1550 }, 1560 },
1561 [](Generate& generator) {
1562 generator.setSymbol(Decoration::Start, 4, 4);
1563 generator.setSymbol(Decoration::Exit, 8, 0);
1564 generator.generate(4, 4,
1565 {{{Decoration::Poly | Decoration::Color::Yellow |
1566 Decoration::Can_Rotate,
1567 3},
1568 {Decoration::Gap, 3}}});
1569 },
1570 [](Generate& generator) {
1571 generator.setSymbol(Decoration::Start, 4, 6);
1572 generator.setSymbol(Decoration::Exit, 10, 0);
1573 generator.generate(5, 5,
1574 {{{Decoration::Poly | Decoration::Color::Yellow |
1575 Decoration::Can_Rotate,
1576 3},
1577 {Decoration::Gap, 3}}});
1578 },
1579 [](Generate& generator) {
1580 generator.setFlag(Generate::DisconnectShapes);
1581 generator.setSymbol(Decoration::Start, 4, 6);
1582 generator.setSymbol(Decoration::Exit, 10, 0);
1583 generator.generate(5, 5,
1584 {{{Decoration::Poly | Decoration::Color::Yellow |
1585 Decoration::Can_Rotate,
1586 3}}});
1587 },
1588 [](Generate& generator) {
1589 generator.setSymbol(Decoration::Exit, 10, 0);
1590 generator.generate(5, 5,
1591 {{{Decoration::Dot_Intersection, 36},
1592 {Decoration::Poly | Decoration::Color::Yellow, 2},
1593 {Decoration::Poly | Decoration::Color::Yellow |
1594 Decoration::Can_Rotate,
1595 1},
1596 {Decoration::Start, 1}}});
1597 },
1598 [](Generate& generator) {
1599 generator.setFlag(Generate::BigShapes);
1600 generator.setSymbol(Decoration::Exit, 10, 0);
1601 generator.generate(5, 5,
1602 {{{Decoration::Dot_Intersection, 36},
1603 {Decoration::Poly | Decoration::Color::Yellow, 3},
1604 {Decoration::Start, 1}}});
1605 },
1606 [](Generate& generator) {
1607 generator.setFlag(Generate::DisconnectShapes);
1608 generator.setSymbol(Decoration::Exit, 10, 0);
1609 generator.generate(5, 5,
1610 {{{Decoration::Dot_Intersection, 36},
1611 {Decoration::Poly | Decoration::Color::Yellow, 3},
1612 {Decoration::Start, 1}}});
1613 },
1614 [](Generate& generator) {
1615 generator.setFlag(Generate::TreehouseLayout);
1616 generator.generate(
1617 4, 4,
1618 {{{Decoration::Triangle | Decoration::Color::Magenta, 4},
1619 {Decoration::Stone | Decoration::Color::Black, 2},
1620 {Decoration::Stone | Decoration::Color::White, 2},
1621 {Decoration::Star | Decoration::Color::Black, 1},
1622 {Decoration::Star | Decoration::Color::White, 1}}});
1623 },
1624 [](Generate& generator) {
1625 generator.setFlag(Generate::TreehouseLayout);
1626 generator.generate(
1627 4, 4,
1628 {{{Decoration::Triangle | Decoration::Color::Orange, 2},
1629 {Decoration::Triangle | Decoration::Color::Magenta, 2},
1630 {Decoration::Star | Decoration::Color::Magenta, 2},
1631 {Decoration::Star | Decoration::Color::Green, 2},
1632 {Decoration::Stone | Decoration::Color::Orange, 2},
1633 {Decoration::Stone | Decoration::Color::Green, 2}}});
1634 },
1635 [](Generate& generator) {
1636 generator.setFlag(Generate::TreehouseLayout);
1637 generator.generate(
1638 5, 4,
1639 {{{Decoration::Triangle | Decoration::Color::Green, 3},
1640 {Decoration::Triangle | Decoration::Color::Magenta, 2},
1641 {Decoration::Star | Decoration::Color::Magenta, 3},
1642 {Decoration::Star | Decoration::Color::Orange, 3},
1643 {Decoration::Stone | Decoration::Color::Orange, 2},
1644 {Decoration::Stone | Decoration::Color::Green, 2}}});
1645 },
1646 [](Generate& generator) {
1647 generator.setFlag(Generate::TreehouseLayout);
1648 generator.generate(
1649 4, 4,
1650 {{{Decoration::Star | Decoration::Color::Black, 1},
1651 {Decoration::Star | Decoration::Color::White, 2},
1652 {Decoration::Stone | Decoration::Color::Black, 2},
1653 {Decoration::Stone | Decoration::Color::White, 1},
1654 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Black,
1655 1},
1656 {Decoration::Poly | Decoration::Black, 1}}});
1657 },
1658 [](Generate& generator) {
1659 generator.setFlag(Generate::TreehouseLayout);
1660 generator.generate(
1661 4, 4,
1662 {{{Decoration::Star | Decoration::Color::Black, 1},
1663 {Decoration::Star | Decoration::Color::White, 2},
1664 {Decoration::Stone | Decoration::Color::Black, 2},
1665 {Decoration::Stone | Decoration::Color::White, 1},
1666 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Black,
1667 1},
1668 {Decoration::Poly | Decoration::White, 1}}});
1669 },
1670 [](Generate& generator) {
1671 generator.setFlag(Generate::TreehouseLayout);
1672 generator.generate(
1673 5, 5,
1674 {{{Decoration::Star | Decoration::Color::Green, 2},
1675 {Decoration::Star | Decoration::Color::Magenta, 4},
1676 {Decoration::Stone | Decoration::Color::Green, 2},
1677 {Decoration::Stone | Decoration::Color::Magenta, 2},
1678 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Green,
1679 1},
1680 {Decoration::Poly | Decoration::Green, 1}}});
1681 },
1682 [](Generate& generator) {
1683 generator.setFlag(Generate::TreehouseLayout);
1684 generator.setFlag(Generate::BigShapes);
1685 generator.generate(
1686 5, 5,
1687 {{{Decoration::Star | Decoration::Color::Green, 3},
1688 {Decoration::Star | Decoration::Color::Magenta, 4},
1689 {Decoration::Stone | Decoration::Color::Green, 2},
1690 {Decoration::Stone | Decoration::Color::Magenta, 2},
1691 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Green,
1692 1},
1693 {Decoration::Poly | Decoration::Magenta, 1}}});
1694 },
1695 [](Generate& generator) {
1696 generator.setFlag(Generate::TreehouseLayout);
1697 generator.generate(
1698 5, 5,
1699 {{{Decoration::Star | Decoration::Color::Black, 2},
1700 {Decoration::Star | Decoration::Color::White, 3},
1701 {Decoration::Stone | Decoration::Color::Black, 2},
1702 {Decoration::Stone | Decoration::Color::White, 1},
1703 {Decoration::Triangle | Decoration::Color::Black, 2},
1704 {Decoration::Triangle | Decoration::Color::White, 1},
1705 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Black,
1706 1},
1707 {Decoration::Poly | Decoration::White, 1}}});
1708 },
1709 [](Generate& generator) {
1710 generator.setFlag(Generate::TreehouseLayout);
1711 generator.generate(
1712 5, 5,
1713 {{{Decoration::Star | Decoration::Color::Black, 3},
1714 {Decoration::Star | Decoration::Color::White, 3},
1715 {Decoration::Stone | Decoration::Color::Black, 1},
1716 {Decoration::Stone | Decoration::Color::White, 1},
1717 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Black,
1718 1},
1719 {Decoration::Poly | Decoration::Can_Rotate | Decoration::White,
1720 1},
1721 {Decoration::Triangle | Decoration::Black, 1},
1722 {Decoration::Triangle | Decoration::White, 1}}});
1723 },
1724 [](Generate& generator) {
1725 generator.setFlag(Generate::RegularStartEnd);
1726 generator.generate(
1727 4, 4,
1728 {{{Decoration::Star | Decoration::White, 3},
1729 {Decoration::Star | Decoration::Black, 8},
1730 {Decoration::Star | Decoration::Magenta, 6},
1731 {Decoration::Eraser | Decoration::Color::White, 1}}});
1732 },
1733 [](Generate& generator) {
1734 generator.setFlag(Generate::RegularStartEnd);
1735 generator.setFlag(Generate::DisconnectShapes);
1736 generator.generate(
1737 4, 4,
1738 {{{Decoration::Poly | Decoration::Color::Yellow, 4},
1739 {Decoration::Eraser | Decoration::Color::White, 1}}});
1740 },
1741 [](Generate& generator) {
1742 generator.setFlag(Generate::RegularStartEnd);
1743 generator.generate(
1744 4, 4,
1745 {{{Decoration::Poly | Decoration::Color::Yellow, 4},
1746 {Decoration::Poly | Decoration::Negative |
1747 Decoration::Color::Blue,
1748 1},
1749 {Decoration::Eraser | Decoration::Color::White, 1}}});
1750 },
1751 [](Generate& generator) {
1752 generator.setFlag(Generate::RegularStartEnd);
1753 generator.setFlag(Generate::DisconnectShapes);
1754 generator.generate(
1755 4, 4,
1756 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1757 {Decoration::Poly | Decoration::Negative |
1758 Decoration::Color::Blue,
1759 1},
1760 {Decoration::Eraser | Decoration::Color::White, 1}}});
1761 },
1762 [](Generate& generator) {
1763 generator.setFlag(Generate::RegularStartEnd);
1764 generator.generate(4, 4,
1765 {{{Decoration::Star | Decoration::Color::Green, 7},
1766 {Decoration::Star | Decoration::Color::Orange, 5},
1767 {Decoration::Eraser | Decoration::Green, 1},
1768 {Decoration::Eraser | Decoration::Orange, 1}}});
1769 },
1770 [](Generate& generator) {
1771 generator.setFlag(Generate::RegularStartEnd);
1772 generator.generate(5, 5,
1773 {{{Decoration::Star | Decoration::Color::Magenta, 8},
1774 {Decoration::Star | Decoration::Color::Orange, 6},
1775 {Decoration::Star | Decoration::Color::Green, 4},
1776 {Decoration::Eraser | Decoration::Magenta, 1},
1777 {Decoration::Eraser | Decoration::Orange, 1}}});
1778 },
1779 [](Generate& generator) {
1780 generator.setFlag(Generate::RegularStartEnd);
1781 generator.generate(
1782 4, 4,
1783 {{{Decoration::Poly | Decoration::Color::Green, 4},
1784 {Decoration::Eraser | Decoration::Color::White, 2}}});
1785 },
1786 [](Generate& generator) {
1787 generator.setFlag(Generate::RegularStartEnd);
1788 generator.setFlag(Generate::DisconnectShapes);
1789 generator.generate(
1790 4, 4,
1791 {{{Decoration::Poly | Decoration::Color::Green, 4},
1792 {Decoration::Eraser | Decoration::Color::White, 2}}});
1793 },
1794 [](Generate& generator) {
1795 generator.setFlag(Generate::RegularStartEnd);
1796 generator.generate(
1797 4, 4,
1798 {{{Decoration::Poly | Decoration::Color::Green, 2},
1799 {Decoration::Poly | Decoration::Color::Magenta, 1},
1800 {Decoration::Star | Decoration::Color::Green, 2},
1801 {Decoration::Star | Decoration::Color::Magenta, 2},
1802 {Decoration::Eraser | Decoration::Color::White, 2}}});
1803 },
1804 [](Generate& generator) {
1805 generator.setFlag(Generate::RegularStartEnd);
1806 generator.generate(6, 3,
1807 {{{Decoration::Star | Decoration::Color::Orange, 4},
1808 {Decoration::Poly | Decoration::Color::Orange, 2},
1809 {Decoration::Poly | Decoration::Negative |
1810 Decoration::Color::Magenta,
1811 2},
1812 {Decoration::Eraser | Decoration::White, 2}}});
1813 },
1814 [](Generate& generator) {
1815 generator.setFlag(Generate::RegularStartEnd);
1816 generator.generate(6, 3,
1817 {{{Decoration::Star | Decoration::Color::Magenta, 2},
1818 {Decoration::Star | Decoration::Color::Orange, 3},
1819 {Decoration::Poly | Decoration::Color::Orange, 2},
1820 {Decoration::Poly | Decoration::Negative |
1821 Decoration::Color::Magenta,
1822 2},
1823 {Decoration::Eraser | Decoration::White, 2}}});
1824 },
1825 [](Generate& generator) {
1826 generator.setFlag(Generate::FalseParity);
1827 generator.setSymbol(Decoration::Exit, 0, 0);
1828 generator.setSymbol(Decoration::Exit, 16, 0);
1829 generator.setSymbol(Decoration::Exit, 0, 16);
1830 generator.setSymbol(Decoration::Exit, 16, 16);
1831 generator.generate(
1832 8, 8,
1833 {{{Decoration::Stone | Decoration::Color::White, 10},
1834 {Decoration::Stone | Decoration::Color::Black, 10},
1835 {Decoration::Dot_Intersection, 81},
1836 {Decoration::Start, 7},
1837 {Decoration::Eraser | Decoration::Color::Purple, 1}}});
1838 },
1839 [](Generate& generator) {
1840 generator.setFlag(Generate::TreehouseLayout);
1841 generator.generate(
1842 4, 5,
1843 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1844 {Decoration::Triangle | Decoration::Color::Orange, 5},
1845 {Decoration::Eraser | Decoration::Color::White, 1}}});
1846 },
1847 [](Generate& generator) {
1848 generator.setFlag(Generate::RegularStartEnd);
1849 generator.generate(
1850 5, 5,
1851 {{{Decoration::Poly | Decoration::Color::Yellow, 7},
1852 {Decoration::Stone | Decoration::Color::White, 3},
1853 {Decoration::Stone | Decoration::Color::Black, 3},
1854 {Decoration::Triangle | Decoration::Color::Orange, 6}}});
1855 },
1856 [](Generate& generator) {
1857 generator.setSymbol(Decoration::Exit, 10, 0);
1858 generator.generate(
1859 5, 5,
1860 {{{Decoration::Dot_Intersection, 36},
1861 {Decoration::Triangle1 | Decoration::Color::Orange, 4},
1862 {Decoration::Start, 1}}});
1863 },
1864 [](Generate& generator) {
1865 generator.setSymbol(Decoration::Exit, 10, 0);
1866 generator.generate(
1867 5, 5,
1868 {{{Decoration::Dot_Intersection, 36},
1869 {Decoration::Triangle3 | Decoration::Color::Orange, 6},
1870 {Decoration::Start, 1}}});
1871 },
1872 [](Generate& generator) {
1873 generator.setSymbol(Decoration::Exit, 10, 0);
1874 generator.generate(
1875 5, 5,
1876 {{{Decoration::Dot_Intersection, 36},
1877 {Decoration::Triangle2 | Decoration::Color::Orange, 10},
1878 {Decoration::Start, 1}}});
1879 },
1880 [](Generate& generator) {
1881 generator.setSymbol(Decoration::Exit, 10, 0);
1882 generator.generate(
1883 5, 5,
1884 {{{Decoration::Dot_Intersection, 36},
1885 {Decoration::Triangle | Decoration::Color::Orange, 8},
1886 {Decoration::Start, 1}}});
1887 },
1888 [](Generate& generator) {
1889 generator.setFlag(Generate::RegularStartEnd);
1890 generator.setFlag(Generate::FalseParity);
1891 generator.generate(
1892 5, 5,
1893 {{{Decoration::Dot_Intersection, 36},
1894 {Decoration::Triangle | Decoration::Color::Orange, 7},
1895 {Decoration::Eraser | Decoration::Color::White, 1}}});
1896 },
1897 [](Generate& generator) {
1898 generator.setFlag(Generate::RegularStartEnd);
1899 generator.setFlag(Generate::SmallShapes);
1900 generator.generate(
1901 5, 5,
1902 {{{Decoration::Poly | Decoration::Can_Rotate |
1903 Decoration::Color::Orange,
1904 3},
1905 {Decoration::Poly | Decoration::Can_Rotate |
1906 Decoration::Color::Magenta,
1907 2},
1908 {Decoration::Star | Decoration::Color::Orange, 4},
1909 {Decoration::Star | Decoration::Color::Magenta, 5}}});
1910 },
1551 }; 1911 };
1552 1912
1553 Generate generator; 1913 Generate generator;