diff options
45 files changed, 11818 insertions, 0 deletions
diff --git a/2022/LICENSE b/2022/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/2022/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<https://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<https://www.gnu.org/licenses/why-not-lgpl.html>. diff --git a/2022/day01/input1.txt b/2022/day01/input1.txt new file mode 100644 index 0000000..2094f91 --- /dev/null +++ b/2022/day01/input1.txt @@ -0,0 +1,14 @@ +1000 +2000 +3000 + +4000 + +5000 +6000 + +7000 +8000 +9000 + +10000 diff --git a/2022/day01/input2.txt b/2022/day01/input2.txt new file mode 100644 index 0000000..e1e0531 --- /dev/null +++ b/2022/day01/input2.txt @@ -0,0 +1,2253 @@ +4601 +1583 +2995 +5319 +3352 +1722 +4331 +5840 +3339 +5341 +3415 +1297 +1610 +2703 + +5928 +1266 +6405 +4354 +2815 +1621 +3545 +1733 +2162 +1155 +3674 +4055 +4262 +2115 + +25873 +16103 +17042 + +6479 +1521 +6902 +6331 +6146 +1591 +2063 +2149 +1463 +1865 +2598 +6893 +3617 + +1431 +8935 +8134 +8885 +8698 +8884 +7982 +3617 +7079 + +34031 +8383 + +3697 +1199 +3703 +1322 +5679 +1627 +5910 +1092 +6445 +2371 +3672 +2281 +2710 +5111 + +17480 + +58355 + +3711 +2406 +2101 +1406 +5376 +2149 +4608 +6768 +6322 +3792 +4249 +2342 +2014 + +6197 +6908 +8484 +3901 +3001 +7880 +5165 +2536 + +3964 +4229 +4898 +4544 +3535 +6329 +1573 +4988 +1424 + +57606 + +16325 + +6038 +11538 +13026 +12734 +6077 + +4696 +3914 +2375 +1188 +1247 +1594 +1843 +5297 +6053 +1114 +3179 +5968 +1430 +4268 +2514 + +6684 +2321 +3946 +1746 +7583 +10379 +3696 +10110 + +5834 +5944 +9336 +9638 +3373 +4279 +9942 + +7208 +7801 +3771 +8183 +1824 +8217 +1545 +3041 +7369 +5980 + +8368 +6180 +3100 +4801 +4430 +6758 +3023 +3394 + +2545 +4992 +3347 +5830 +3764 +3237 +2431 +3406 +1408 +5601 +6548 +4625 + +32334 + +1112 +5471 +10983 +8298 +4342 +4221 +7807 + +5733 +2012 +5928 +3503 +2785 +4867 +1515 +4819 +3569 +3353 +5997 +4921 +5498 +3234 +5588 + +11040 +5547 +12070 +2168 +7603 +7245 +4966 + +13027 +12518 +15381 +3251 +14935 + +15858 +29295 + +2476 +4289 +10350 +3953 +10089 +6953 +5555 +3007 + +61732 + +5567 +4895 +6095 +4880 +2945 +6022 +2129 +5010 +4100 +3554 +3410 +1820 + +9902 +33605 + +15331 +15615 +5062 +15073 + +5940 +2252 +1233 +2582 +3624 +2754 +2304 +3189 +4060 +3862 +5164 +1487 +2776 +1807 +3385 + +6798 +2385 +3755 +10299 +11500 +6478 +1911 + +1469 +9309 +1785 +17145 + +3363 +3210 +3285 +4491 +5992 +2927 +4098 +2133 +3191 +2810 +4694 + +31006 +1582 + +4356 +6146 +2051 +6503 +9487 +9244 +4808 +7761 +7108 + +1771 +6062 +7135 +5575 +3278 +1221 +2547 +7266 +5444 +7395 + +10634 +1196 + +1361 + +2810 +3106 +8654 +9455 +3778 +4219 +8882 +9387 +5128 + +7114 +1441 +6146 +4752 +2388 +6420 +7350 +1624 +6050 +5469 +6751 + +5570 +4674 + +2074 +3476 +4064 +9446 +2889 +4871 +6298 +2970 +8588 + +3482 +8492 +2226 +4951 +6733 +5463 +3183 +4807 +4806 + +6974 +10251 +4637 +9558 +5153 +4665 + +6860 +6949 +1524 +4201 +4397 +2278 +4909 +1353 +2074 +1920 +7439 +1040 + +4135 +1411 +5536 +8004 +3090 +1036 +6613 +6353 +6810 + +3932 +4743 +1615 +3201 +3791 +6357 +2511 +3440 +2290 +4741 +2844 +3121 +3641 +3497 + +4549 +5142 +4438 +2945 +4576 +4871 +4795 +6007 +4884 +1031 +2111 +4388 +4705 +5725 +3425 + +45444 + +6688 +9460 +2727 +6989 +6789 +12460 + +7310 +5910 +7822 +7627 +7600 +4793 +3152 +5747 +5197 +8006 + +23983 +33879 + +1020 +4783 +5117 +3628 +3065 +6131 +5543 +1576 +1159 +3721 +3182 +1409 +2738 +5084 + +42750 + +8509 +4370 +1042 +5664 + +59445 + +1589 +5133 +6413 +6578 +3301 +8256 +7749 +4321 +8190 +5025 + +27739 +18609 + +5447 +4022 +4069 +1437 +2811 +6929 +2754 +1108 +7390 +3995 +3480 +3225 + +4240 +6959 +3289 +8063 +4751 +4896 +4611 +6256 +1105 +1334 +7598 + +27831 + +1821 +5333 +7853 +6574 +7985 +3972 +2306 +1875 +1857 +6386 + +12780 +2513 +22939 + +9625 +3785 +8050 +7432 +11772 +10914 + +1387 +3439 +4644 +3880 +1878 +3911 +5329 +1480 +5779 +2083 +3886 +5525 +3930 +4813 +2570 + +15763 +2839 +14258 +1460 + +6193 +3397 +3222 +3262 +3735 +2406 +5588 +2068 +2862 +3271 +1401 +3957 +5690 +4632 + +15070 +5164 +8902 +9580 +4271 + +4494 +5665 +7242 +7687 +7031 +6135 +2670 +3315 +6146 +8085 + +2625 +24285 + +4414 +5985 +2681 +7036 +6486 +2501 +4408 +8582 +5150 +4295 + +1082 +1497 +5638 +4643 +1413 +5969 +1515 +4016 +4856 +3287 +3122 +2948 +3711 +5031 +4692 + +6445 +2261 +2132 +3517 +2461 +2767 +2071 +2176 +6357 +1304 +6034 +1346 + +1318 +4719 +2054 +1433 +6514 +3729 +4329 +1026 +1502 +2611 +1363 +6379 +3617 + +1885 +7519 +2849 +5167 +3136 +4819 +8018 +4110 +2666 +6098 +4943 + +6575 +1624 +6004 +4178 +7453 +5979 +6736 +3883 +7109 +1271 +1175 + +9494 +12633 +11576 +3547 + +4653 +6777 +4497 +2246 +4666 +4675 +4440 +7227 +3808 +2425 +6014 +7305 + +2538 +6155 +4321 +6239 +6279 +1445 +5592 + +4920 +5435 +1392 +4122 +10513 +6359 +1574 +7222 + +9013 +2150 +8377 +8884 +4108 +5427 +1605 +6907 + +7861 +10554 +1210 +1346 +5296 +4419 +9147 + +1858 +2956 +2070 +10271 +5810 +2632 +9429 +3941 + +4306 +4972 +6216 +6345 +3971 +3920 +6295 +3552 +1399 +5425 +5218 +4512 +3376 +4460 + +4107 +4484 +5148 +5456 +7902 +2185 +3439 +7199 +9514 + +11030 +12096 + +2886 +1561 +14057 +7480 +12186 + +8600 +4085 +11755 +4564 +1697 +6345 +10176 + +2538 +10138 +8328 +10621 +13322 +13907 + +5450 +3403 +5776 +5967 +3873 +2761 +5992 +2251 +2278 +4673 +3442 +2720 +2556 +4848 +5967 + +2806 +8228 +9047 +10630 +4367 +4917 +4084 +7893 + +2842 +18343 +1497 +19962 + +3985 +10986 +1431 +1569 +8053 +8987 +6474 + +5733 +2237 +6183 +1642 +1005 +4389 +1889 +2385 +2470 +6338 +2200 +3399 +3659 +4092 + +6579 +5872 +4229 +1081 +2254 +1229 +5218 +4267 +6906 +2818 +1084 +3655 +2294 + +1882 +5005 +3805 +2088 +6809 +4982 +1935 +6789 +1961 +1842 +5988 +2859 +3965 + +2313 +1021 +5090 +1309 +5110 +3142 +4102 +2919 +6010 +3079 +5786 +3701 +2659 +5728 + +4251 +1899 +4119 +8941 +6677 +2161 +2119 +2772 +3122 + +7821 +6113 +5150 +3486 +2072 +4089 +2820 +3161 +7589 +1787 +5988 + +10582 +8240 +1934 +1504 +9070 +1186 +7766 +1066 + +6700 +6181 +3238 +1940 +1229 +3688 +1375 +5873 +2328 +6384 +7446 +7246 + +5542 +6771 +1964 +4532 +3011 +2300 +1451 +6726 +4595 +2926 +5237 +5020 +6129 + +15008 +4409 +6769 +2211 + +11825 +8947 +17411 +2893 + +8460 +11664 +2304 +6865 +2132 +9174 + +15540 +16925 +12015 +7621 + +1439 +11886 +3028 + +4604 +1057 +5342 +4723 +7773 +3373 +7488 +8028 +3246 +6355 +1939 + +2921 +4447 +3472 +5175 +5909 +5936 +5263 +3993 +1589 +3906 +4865 +3156 +2010 + +10089 + +5964 +7650 +4692 +1537 +3281 +3162 +1064 +4567 +3910 +2229 +3566 + +15533 +17311 +11818 +6179 + +4583 +4577 +3573 +1379 +3761 +1048 +4799 +4275 +3515 +5637 +5435 +3801 +5933 +1926 + +11841 +16030 +3213 + +4307 +7300 +1237 +5513 +6799 +2402 +2554 + +67023 + +1573 +6798 +3002 +7536 +2373 +5994 +10122 + +1149 +1836 +7129 +6621 +7432 +2468 +4028 +6560 +5127 +3781 +7035 +5845 + +13729 +10212 +10942 +10087 +10080 +6493 + +6850 +5969 +3370 +5400 +6433 +4762 +5702 +6193 +1836 +1507 +2637 +3051 +1394 + +5465 +10565 +4923 +1671 +9789 +9150 +6466 +8013 + +31283 + +2001 +6032 +6765 +3896 +7593 +3175 +3447 +1718 + +6062 +7630 +6302 +4448 +1014 +4756 +4696 +4069 +5663 +2181 +6153 + +9228 +1871 +11739 +10894 + +7435 +6290 +3249 +9358 +9196 +8951 +5023 +4910 +9686 + +3823 +4247 +7159 + +4630 +3352 +7700 +7752 +3343 +4577 +2448 +10326 + +10002 +28943 + +2592 +4430 +4077 +2126 +4628 +6466 +5919 +7019 +2667 +2573 +7038 +3153 + +2837 +12151 +9774 +1574 +3046 +13079 + +6949 + +5306 +7432 +4274 +6835 +7057 +5695 +4727 +5581 +6516 +3903 +3138 + +4083 +4247 +1806 +2753 +3612 +3509 +5498 +2160 +5814 +1502 +5760 +4663 +1354 +1592 + +59040 + +3738 +7624 +4539 +8649 +9418 +5495 +1178 +8389 + +4458 +5283 +2572 +3530 +6228 +4711 +2621 +2131 +6363 +5611 +3236 +2314 +2547 +1905 + +3744 +1413 +2997 + +2214 +4673 +4481 +5827 +3752 +5489 +5301 +7568 +6869 +2928 +2900 + +11668 +7579 +2324 +7245 +14362 + +1191 +5622 +2764 +3241 +3690 +3627 +2637 +4043 +3012 +2773 +4276 +1127 +3649 + +5327 +6535 +4821 +5531 +3037 +4700 +6287 +6476 +2266 +7550 + +3054 +5023 +1296 +4394 +5649 +1822 +6609 +7038 +5836 +6571 +6918 + +9473 +5377 +8449 +4839 +3118 +7861 + +8784 +3880 +5133 +6131 +2114 +5196 +10405 +1040 + +5003 +5888 +6058 +6910 +3155 +3278 +1159 +3863 +4565 +1181 +2716 +6431 +3014 + +7633 +4984 +1297 +4524 +5183 +3717 +12038 + +5908 +7784 +11211 +7635 +2060 +5502 +9179 + +6537 +6895 +3455 +4799 +5557 +3497 +4467 +1694 +5227 +1663 +2377 +3538 +4529 + +9371 +2421 +9789 +7373 +6459 +6405 +7775 +8218 + +2077 +8589 +3417 +7811 +10255 +4325 +7168 + +5963 +2806 +3512 +2369 +5721 +3852 +3022 +3764 +6152 +1158 +6460 +4694 +1909 +2655 + +7789 +3030 +3621 +6269 +3149 +6405 +2288 +3512 +5674 +1301 + +6120 +2629 +6348 +7105 +3459 +6678 +5903 +4519 +3074 +2086 +3927 + +2924 +12290 +1873 +5613 +3098 +8641 + +24464 +37206 + +7180 +13271 +4832 +10691 +9084 + +4915 +1440 +1841 +1476 +7124 +1692 +7480 +4583 +1896 +3475 +5424 + +6864 +3187 +4680 +5159 +4314 +3148 +1060 +7290 +2080 +8308 + +2412 +16405 +15203 +5606 +9411 + +13201 +6242 +11906 +15782 +12558 + +5319 +7968 +6732 +9702 + +7203 +3571 +7241 +8764 +3466 +6032 +6608 +6898 +7189 +2749 + +6184 +7590 +4976 +4289 +8553 +8238 +5844 +8314 + +3264 +2924 +2586 +1234 +3126 +5269 +6147 +6029 +2384 +6440 +6161 +1708 +2928 +2336 + +24565 +31964 + +11118 +10621 +1430 +3312 +1135 +6740 +9456 + +16874 +4385 +8675 +4237 + +1537 +4313 +5552 +2195 +3530 +2433 +3056 +3693 +1151 +4297 +2017 +4917 +3823 +3388 +1580 + +5795 +2642 +3822 +1824 +2366 +3800 +2020 +4065 +2758 +2677 +3951 +5175 +4433 +1199 +3212 + +4183 +2822 +6355 +4427 +6384 +2931 +4892 +3148 +5802 +3885 +4892 +5233 +4269 +4286 + +3711 +5430 +6115 +5561 +5066 +2796 +3886 +1960 +6083 +4657 + +11662 +12901 +6891 +3897 + +1086 +4333 +1477 +1046 +5670 +3996 +1909 +3544 +5143 +1387 +6319 +3084 +3136 +6084 + +36111 +14790 + +6552 +8491 + +6636 +9718 +15736 +1619 + +9531 +7507 +7311 +5991 +6901 +12139 +10580 + +10956 +7878 +9100 +11884 +2906 +10388 + +7767 +4040 +5872 +1060 +2299 +1008 +3597 +2749 +5025 + +1550 + +5364 +7108 +8661 +8894 +9240 +10008 +4243 + +46695 + +4195 +2850 +2978 +4995 +2944 +5773 +3669 +3662 +4471 +6343 +4258 +1252 +6408 +5995 + +9482 +11898 +9022 +8167 +9232 + +2647 +1990 +2948 +5314 +2341 +3828 +2513 +2091 +4173 + +9640 +2690 +8774 +11619 +11201 +2429 +7216 + +3433 +5914 +5223 +4879 +1349 +4692 +2906 +3761 +4416 +4813 +2751 +4474 +2057 +1675 + +9803 +8986 +3617 +2175 +1412 +8370 + +7671 +6448 +6759 +1857 + +25790 +14495 + +1872 +6441 +4585 +4053 +4142 +5844 +2089 +3387 +2660 +5890 +6499 +3769 +2710 + +23432 +16915 + +1351 +2656 +6557 +1149 +5054 +1681 +6871 +2643 +3158 +1617 +4087 +6498 +4993 + +5494 +10055 +2730 +5800 +2923 +8037 +3448 +1527 + +5803 +18165 +21951 + +4766 +3809 +4678 +3184 +9687 +7825 +7222 +6638 +2016 + +1801 +1717 +4955 +6088 +1848 +4033 +7023 +3551 +5970 +1415 +7027 +7411 + +25450 +11523 +22548 + +1566 +4742 +3947 +2708 +2019 +3479 +4735 +6002 +7042 +1828 +7071 +1535 + +14218 +5232 +10228 +3340 +7975 + +8837 +3510 +10363 +11854 +2821 +7627 +10186 + +1102 +3749 +1436 +1561 +3098 +3849 +3726 +2041 +1100 +1532 +5473 +4643 +5922 +4739 +1216 + +4408 +7369 +1369 +4742 +7109 +4368 +3468 +2777 +3296 +6999 +5777 +5019 + +3750 +12190 + +15694 +12690 +14834 +15532 +1955 + +8702 +1209 +3012 +3074 +8390 +6779 +6117 +2544 +3900 +6374 + +4126 +5772 +7149 +3949 +2371 +2374 +2469 +7839 +7898 +2871 +5808 + +1108 + +9610 +4374 +10275 +2595 +9413 +8906 +6402 +1551 + +6560 +8632 +5064 +2152 +3443 +4229 + +13104 +24831 +17968 + +4648 +5332 +4866 +1048 +4089 +4710 +1406 +2544 +5319 +4685 +4622 +6080 +5899 +3266 + +5694 +12879 +4015 +16066 +1600 + +11186 +31873 + +3871 +6382 +5076 +3606 +4283 +7913 +11124 + +9959 +14807 +17825 +5880 + +3914 +14183 + +8104 +8322 +10254 +3957 +1410 +9402 +2012 + +1130 +4640 +5738 +3860 +1510 +3067 +5021 +5321 +2820 +1269 +3433 +5216 +5585 +1344 + +5975 +9879 +4969 +9796 +1404 +6772 +3240 +1954 + +12512 +13741 +6425 +13234 +10597 +12414 + +2031 +2255 +3306 +1831 +1601 +1959 +4452 +5054 +4967 +5392 +4040 +4989 +4385 +5838 +5043 + +3165 +10185 +10580 +1626 +5436 +9644 +10842 + +5139 +8090 +1045 +5867 +5987 +8488 +2409 + +1045 +2843 +3543 +3224 +2855 +3318 +4192 +4600 +5773 +4074 +4705 +4716 +1798 +5274 +2443 + +6325 +7878 +4932 +7543 +8073 +2113 +5481 +8138 +2151 +1296 + +6007 +2506 +2346 +3631 +1526 +4875 +3099 +5253 +6281 +2057 +3209 +2622 +2930 +4926 + +2901 +4561 +2361 +4474 +8508 +6515 +5024 +2201 +4402 +6922 + +4219 +24714 +17196 + +38164 + +1900 +5727 +3935 +5498 +6165 +4621 +3347 +4387 +5982 +4213 +1742 +1302 +2452 +3923 + +9558 +7131 +15662 +9101 +13730 + +6474 +2222 +6539 +3747 +5995 +5573 +6288 +4684 +5121 +2226 +1722 +1117 +1020 + +3565 +3489 + +18395 +20407 + +57158 + +19992 + +3636 +4392 +4584 +5421 +3159 +5817 +2303 +1013 +1758 +1802 +4630 +4261 +1524 +1639 + +4652 +1967 +4765 +4946 +3023 +2732 +2749 +5258 +5935 +6428 +3053 +6328 +2389 +5681 + +5450 +1993 +2824 +3596 +2658 +8545 +6577 +3024 +4001 +1780 + +7902 +6187 + +1349 +6028 +3307 +1964 +5116 +2308 +6108 +4286 +1689 +3324 +3728 +4946 +4267 +3801 +3806 + +14183 +29320 + +32460 +25012 + +3317 +5545 +7302 +4936 +7934 +6094 +7971 +2497 +8130 +3752 + +4195 +2147 +7770 +4214 +4737 +7962 +5942 +4478 +3816 +7508 +6693 + +26013 +8614 +19828 + +1144 +2361 +4371 +4246 +3442 +1693 +5137 +5806 +2434 +1413 +3135 +4028 +4757 +6005 + +2351 +4927 +3004 +3384 +1545 +2172 +3407 +4120 +3954 +1806 +2342 +5847 +5228 +1005 + +11490 +7855 +9775 +10577 +3232 +5211 + +8316 +2984 +13490 +15716 +7433 + +11288 +14551 +10056 +14839 +7241 + +4573 +2731 +3358 +4850 +6352 +5419 +1021 +6611 +6489 +3794 +6089 diff --git a/2022/day01/main b/2022/day01/main Binary files differnew file mode 100755 index 0000000..68fb10f --- /dev/null +++ b/2022/day01/main diff --git a/2022/day01/main.c b/2022/day01/main.c new file mode 100644 index 0000000..a5e21e6 --- /dev/null +++ b/2022/day01/main.c @@ -0,0 +1,34 @@ +#include <stdio.h> +#include <stdlib.h> + +int main() +{ + + int calsum; + int maxcalsum = 0; + int elfnum = 1; + int maxelfnum; + + char *line = NULL; + size_t len = 0; + + // beginning new elf + while (getline(&line, &len, stdin) >= 0) + { + if ( line[0] == '\n') + { + elfnum++; + calsum = 0; + continue; + } + calsum += atoi(line); + printf("Elf %d hat %d Kalorien\n", elfnum, calsum); + if ( maxcalsum < calsum) + { + maxcalsum = calsum; + maxelfnum = elfnum; + } + } + + printf("Elf %d hat die Maximalen %d Kalorien\n", maxelfnum, maxcalsum); +} diff --git a/2022/day01/main.py b/2022/day01/main.py new file mode 100644 index 0000000..7ac4153 --- /dev/null +++ b/2022/day01/main.py @@ -0,0 +1,21 @@ + +cal=0 +elf=1 +maxelf=0 +calmax1=0 +calmax2=0 +calmax3=0 +for line in open("input2.txt", "r"): + # print(line) + if( line == "\n" ): + cal=0 + elf += 1 + continue + cal += int(line) + if (cal > calmax1 && elf > max): + calmax3 = calmax2 + calmax2 = calmax1 + calmax1 = cal + # calmax = max(calmax, cal) +print(calmax1, calmax2, calmax3) + diff --git a/2022/day01/main.sh b/2022/day01/main.sh new file mode 100755 index 0000000..c5b60a5 --- /dev/null +++ b/2022/day01/main.sh @@ -0,0 +1,3 @@ +#!/bin/sh +paste -sd+ /dev/stdin | sed 's/++/\n/g' | bc | sort -n +# ./main.sh < input2.txt | tail -3 | paste -sd+ - | bc diff --git a/2022/day01/test.c b/2022/day01/test.c new file mode 100644 index 0000000..bb48b4c --- /dev/null +++ b/2022/day01/test.c @@ -0,0 +1,13 @@ +#include <stdio.h> +#include <stdlib.h> + +int main() +{ + int i; + char *line = NULL; + size_t len = 0; + while (getline(&line, &len, stdin) >= 0) { + if ( line[0] == '\n' ) printf("newline\n"); + printf("%d\n", atoi(line)); + } +} diff --git a/2022/day02/input1.txt b/2022/day02/input1.txt new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/2022/day02/input1.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/2022/day02/input2.txt b/2022/day02/input2.txt new file mode 100644 index 0000000..20e0cef --- /dev/null +++ b/2022/day02/input2.txt @@ -0,0 +1,2500 @@ +C Y +C X +A Z +B X +B Z +C X +C X +B Z +C X +B Z +C X +C X +A X +C Y +A X +C Y +B Y +C X +C Y +B Z +A X +C X +B X +B X +B Z +A Z +C Z +B Z +B Z +C X +B Z +C X +B Z +B Z +C X +C Y +B Z +C Y +A Z +B Y +C X +C Y +A Z +B Z +B Z +C X +C Y +B X +B Z +A X +B X +A X +B Z +C Y +C Y +A X +C X +C X +B X +A Z +C Y +C X +B Z +A Z +C Y +B X +C Y +B Z +C X +B X +B Z +B Z +C Z +B Y +C Y +B Y +A Z +A X +A Y +A Y +C Y +C X +C X +B Z +B X +C X +B Z +A Z +C Y +C Z +C Z +B X +B Z +C Y +A Y +A X +C X +B Z +B Y +B X +B Z +B Z +A X +C Y +C Y +C X +A X +B Z +A Z +A X +B Z +C X +C Z +C Z +C Y +C Z +B Z +C Z +C Y +B Z +A X +C Y +B X +C Y +B Z +C Y +A Z +A X +B Z +A X +A Y +B Z +C X +C Y +C Y +B Z +B Z +A Z +C X +A Z +A X +A Z +B Z +B X +A Z +B Z +B Y +C X +C Y +C X +C X +A Z +A Z +C Y +B Z +C Y +B X +C Y +C Y +B Z +C X +B Z +A Z +C Y +C Y +B Z +A X +C X +B Z +C X +B Y +A Y +C X +B X +C Y +B Z +C Z +C X +C Z +B Z +B Y +A X +A Z +B Z +A Z +C X +A X +C X +C Y +C Z +A Z +B Z +B X +B X +A Y +B Y +C Y +B Y +B Z +A X +A Y +A Z +B X +B Z +C Z +C Z +B Z +C Y +C Y +C X +C X +B Z +B Z +C Y +A Z +C X +C Y +A Y +A X +B Z +C Z +C X +C X +C X +A Z +C Y +B Z +B Z +C X +C Y +C Z +B Z +C Y +A X +A Z +A Z +C Y +A X +B Z +C Y +C X +C X +B Z +C Z +B Z +B Z +B X +A Z +C Y +C Y +C X +B Z +B Y +B Z +B Z +C Y +A X +A Y +C Y +A X +C Y +C Z +A Y +A X +B Z +A X +A X +A Y +B X +B Z +C Z +B Z +B Z +B X +B X +C X +A X +C Y +C X +C Y +A X +B Z +A X +A Y +B Z +C Y +B Z +B Z +C Y +A Y +A Z +C X +C Y +C Y +C X +C Z +C Y +B Z +C Z +B X +C Z +B Z +A Z +B X +C X +C X +B X +B Z +C X +C X +B X +A Z +A X +A Z +B Z +B Z +B Z +A X +C Y +C Y +B Z +A X +A X +B Y +C Y +B X +C X +C Y +C X +C Y +A X +B X +A Z +A Y +B Y +A Z +B X +B Z +B Z +A Y +B X +C Y +B X +B Z +B Y +A X +A Z +C X +C X +C Z +C Z +B X +C X +B X +C X +B X +B Z +B Z +B X +B Y +C Y +A Z +B Y +A Z +C Y +B Z +C Z +C Z +B Y +B X +B X +C X +A Y +A Z +B Y +A Z +A Z +A X +A Z +B Y +A X +A X +C Z +C X +C X +C X +C Z +A Z +C Z +B Y +B Z +A X +B Z +C Z +C X +C Y +C X +A Z +C Y +C Y +C Y +B X +C Y +A Y +C Y +C X +A Z +A X +B Z +C Z +C X +A X +B Y +C Y +B Z +B Z +B Z +C Z +A Z +C Y +C X +C Z +C X +B Z +B Z +A X +B Z +A Z +A Z +B X +C Y +C Y +A X +B X +B Y +A X +C Y +A Z +C Y +C Y +B X +B X +B Z +B X +A Y +C Y +C Y +C Z +B X +A Y +A X +A X +C Y +C Z +C Y +A X +C Y +A X +B Y +B X +A X +C X +C X +A X +A Z +A X +C Y +B Y +B Z +B Y +C Z +A Z +B Y +A Z +A X +C X +B Z +C Z +B X +B Z +A Z +B Z +C X +B Z +B X +B Y +C Z +B Y +C Y +C X +C X +C Y +A Z +B Z +B X +B Z +B X +C Z +A X +A X +A X +B Y +B Y +B Z +A X +B Z +A X +A Z +B Z +B X +B X +A Z +A X +B Z +C Z +C Z +C Z +B Z +C Y +C X +C X +B Z +C Z +B Z +C Y +C X +B Z +C Z +B Z +B Z +B Z +C X +C X +B Y +B Z +B Z +C X +C Y +A X +A Z +C Z +C Z +C X +C Y +A Z +C Z +B Z +B Z +C Y +C X +B X +B Z +A Z +B Z +C Y +A X +B X +A X +C Z +C Y +C X +C X +B Z +C Z +B Z +C Z +C Z +A X +B Z +B Y +B Z +C X +B Z +A Z +C X +A X +B Z +C Z +C X +A X +C Z +A Y +B Z +C Z +C Y +A Z +B X +C Z +A X +A Y +C X +C Z +B Z +C X +A Z +B Z +C Z +C Z +A Y +C Y +C X +A Y +B Z +A Y +C X +C X +C Z +B X +B Z +C Y +A X +A Z +B Z +B Z +C Z +B Z +A X +A Y +B Y +A Z +B Z +B Z +C X +A Y +C Y +B Z +C X +B Y +B X +C Y +C X +B Z +B Z +B Z +C Y +B X +A X +B Z +C X +C Z +C X +A Z +B Z +C Y +B Z +A X +A X +B Z +C Z +C Z +B X +A Z +C Z +C X +B X +C Y +B Z +A X +C X +A Z +C Z +B X +B Z +A X +A X +B Z +C Y +C X +A Y +C X +C X +A X +A Z +B Y +C Z +C Z +C X +A Y +C X +B X +C X +B Y +C Y +B Z +A Z +C Z +A Y +A Z +B Y +C X +B Z +C X +C Y +C Z +B X +A X +C X +A Z +B Z +A Y +C Y +B Z +C X +C X +C X +B Y +C Y +B X +C X +A Z +A Y +A Z +C X +C Z +C X +C Z +B Y +A Z +B Z +C Z +B Z +B Z +C X +B Z +A Z +C Z +C Z +C X +A Y +B X +B Z +A Z +B Z +A X +B Z +C Y +C X +C X +A X +C X +B X +C Y +C X +B Z +B Z +C X +B Y +C Y +B Y +B X +C X +B X +B Z +B Z +C Y +A X +A X +A Z +A Y +C X +B Y +B Y +A Y +C Z +B X +B Z +B Z +C X +C Y +B Z +C Y +C Z +C X +C Z +A Z +B Y +A Z +B Z +C Y +C X +C Y +B Z +B Z +C X +C X +B Z +A X +A Z +C Y +B Y +A Y +B X +B X +A Z +B Z +B Z +A Z +A Z +C X +C X +C Y +C Z +A Y +C Y +B X +B Z +C X +B Z +C Z +B Z +C X +B Z +B X +A Y +B Z +C X +C Y +B Z +C X +C Y +C X +C X +A X +C X +C Y +A Z +B Z +C X +C Y +C Y +A Z +B Z +C X +C X +B X +A X +C X +C Y +B Z +C X +C X +C X +C Z +C Z +B Z +B Z +C Z +C Z +C X +A Z +C Y +C Y +C X +C Z +C Y +A Z +A Z +A Z +C Y +C Y +B X +B Z +B Y +C Z +A Z +C Z +C Y +C Z +A Y +A Y +B X +B Z +B X +A X +B X +C Z +C X +B Z +C Z +C Z +B Z +C X +C X +A X +C Z +C Y +A Z +A Z +C Z +A Y +B Y +B Z +C Z +A Z +A X +C Y +B Z +A X +B Z +B Z +A Z +A X +A Z +C Z +C X +B X +C Y +B Z +B X +C Y +C Y +B Z +C X +C Y +C Z +A Z +B X +C Y +A Z +C X +B Y +B Y +C Y +B Z +B Z +A X +C X +B Z +C X +B Z +B Y +C Y +B X +C Z +B Z +C Z +B Z +B Y +C X +C Z +C Z +C Y +B X +B Z +C Y +B Z +C Z +B Z +B Z +B Y +C X +C Y +C X +C X +A Z +C Y +C Y +C Z +A X +C X +B Y +B X +A Y +C X +B Z +C Y +C Y +B Z +B Y +B Z +C Y +C Y +C Y +C X +C X +A Z +C Y +C X +C X +A Y +C Y +B Z +A X +A X +C X +B Z +C Y +C Z +B Z +B Z +C Z +C Y +B Z +B X +C Z +B Z +C Y +C Z +B X +A Y +A Z +B X +C Z +C Y +A X +B Z +A X +B Z +B X +C Z +C Y +C X +A Z +C Y +C Y +A Z +A X +C Y +A X +A X +A X +B Z +C Y +B Z +B Z +B Z +C X +B Z +A X +B Y +C Y +C X +C X +C Y +C Y +A X +A X +C Y +C Z +B X +C Y +A X +C X +C X +C Y +B Z +B Z +A Y +B Z +C Y +C Y +C Y +B Z +C Z +C X +C X +B Z +C X +B X +B Z +B Y +C X +C Y +A X +B Z +B Z +C X +B Z +B X +B Z +C Y +B Z +C Y +C X +B Z +B Y +A Y +A X +A Z +A Z +B Y +A X +A X +C Y +C Y +A X +B Z +C X +A Z +B Z +B Z +A Y +C X +B Z +A Y +C Z +C Y +B X +C Z +C Z +C X +C Y +C X +C Y +B Z +B Z +B Z +B Z +A X +C Z +B Z +A Z +A X +A X +C X +C Y +C X +C X +C Z +C X +A Y +B Z +C X +A Z +B Z +C Y +B Z +A Z +A X +C X +A Z +C Z +A X +C Z +C Y +C Y +A X +C X +B Y +C Y +C Y +A Z +B Z +A Z +C Z +A Z +C Y +A X +C X +C Y +C Y +B Y +B Z +A Z +C X +B Y +A X +C Y +A Y +C Z +A Z +C Z +A X +B X +A Z +A Y +C X +A X +B Z +B Y +C Y +B Y +C X +B Z +C X +C Y +B Z +B X +B X +A X +C X +C Z +A X +B Z +C X +C X +C Z +B Y +A Z +A X +C Y +C Z +B Z +C X +B Y +B X +C X +C Z +C Y +B Z +A Z +B X +B Z +C X +C Y +C X +C X +B Z +B Z +B Z +B Z +B Z +C X +A Y +C Z +C Y +C X +C X +A Z +B Z +C Y +C Z +B X +B X +C Z +B Z +C Z +B X +B Z +C Z +C Y +B Z +A X +A X +C Y +C Z +C X +C X +A Z +C Z +C Z +B Z +C Z +B X +C X +A X +C X +B X +C Z +C X +A X +C Y +B Z +B X +C X +C X +C Z +B X +B Z +B Z +A Z +B Z +B X +A Z +C Y +B Z +C Z +C X +C Z +B Y +C Y +A X +B Y +B Z +C Z +B X +C Z +C Y +B Z +B Z +B Z +B Z +A X +B X +B Z +B Y +B Y +B Z +A Z +B Z +B Z +B X +B X +C X +B X +A Z +B Z +A Y +C X +B Y +A X +B Z +A X +B Z +C Y +C X +B Z +C Y +A Y +A X +C Z +B X +A Y +B Z +C Y +A X +C Z +C Y +C Z +A Z +B Y +A Z +C Y +C Y +A Y +A Z +C Y +C X +C X +C X +C Z +A Y +C X +C Y +A Z +B Y +B Y +B Z +A Z +B Z +A Y +B X +A Z +B Z +B Y +C Z +A Y +B X +A Z +B Y +B Z +B Z +B Z +B Z +B Z +A X +C Z +C Y +B Z +C X +A X +B Y +A Y +B Z +C Z +C X +C Y +B Z +B Z +C Z +B Z +B X +A X +A X +C X +B X +A Z +B X +C X +C Y +C Y +B Z +A Y +B Z +C Z +C Y +B Y +B Z +C Y +C Y +A Z +A X +A Y +C Z +A Y +C X +B Z +C Y +B Z +B Z +A Z +B Y +C X +B X +C X +B X +A Z +C X +C X +B Z +B X +C X +A X +C X +B Z +C Y +C X +B Z +A Z +B Y +A Z +B X +B X +A Z +B X +C Z +B Z +C Z +B Z +B X +A Z +C X +C X +C X +C Z +C X +C X +A Z +B Z +C Y +A Y +B X +C X +B Z +B X +C X +C Z +C Z +B Z +B Z +B X +C Y +A X +A X +B Z +B Z +B Z +C Z +B Z +C Z +A Y +A Y +B Y +C X +C Z +B Z +B Z +C X +B Z +B X +A Z +C X +B X +A Y +C Y +B Z +C Y +C Z +C Y +C Z +B Z +A X +C Z +B Z +B Z +A X +C X +C Y +C Y +C Y +C Y +B Z +B Z +B Z +C Z +A X +B Z +C Z +B Z +B X +C Z +B Z +C X +C Z +C X +B X +B Z +C X +A Z +B Z +B Y +C Y +B Z +C Z +C Z +C Z +C Y +B Z +B Z +B X +B Z +C Z +C Y +B X +B Z +C X +C Y +B X +C Y +C X +B Z +A Z +C X +A X +C X +A X +A X +B Z +B Z +A Y +B Z +A Z +C X +A Z +B Z +B Z +A Z +A X +B Z +B X +C X +B Z +C X +B X +A X +C Y +C Z +C Z +B Z +A Z +A Z +B Z +C X +B Y +C X +C Y +A Z +C X +C X +B Z +C Y +C Y +C X +B X +C Z +A X +A Y +B X +B Z +B Y +B X +C Y +C Z +B Z +B X +A X +C X +A X +A Z +B Z +B Y +B X +B Y +C Z +C X +C X +C Y +A Y +C Z +C Z +C Z +B X +C Y +C X +A Z +B X +C Y +C Y +A Z +C Z +C X +C X +A X +C X +B Z +B X +A Z +C X +B Z +B Z +B Z +B Z +A X +A Z +B X +B Z +B X +B Y +B X +B Z +A Y +C X +C Z +A Z +C X +C Y +A X +A Z +B X +B Y +C Y +C X +A X +C Z +C X +B Z +A X +B Z +A Y +A X +C Y +C X +C Y +A X +C Y +C Y +C Y +C Z +A X +A X +B Z +C X +B Z +B Z +B Z +C X +C X +B Z +B X +A X +A Z +A Y +C X +A X +A Z +B Z +B Z +C Y +A X +B Z +C Y +A X +A Z +C Y +A Z +C Z +C Z +C Y +C Z +A X +C Y +A Y +A X +A X +B X +A Z +C X +B X +C Y +C X +B Z +B Z +B Z +B Y +B Y +C Y +A X +B Z +A Z +C X +B X +A Z +C X +C Y +C Y +B Z +B Z +A Z +B Y +B Z +B Z +C X +B Y +B Z +B Z +C X +C Y +C Z +A Z +C Y +A X +C X +B Y +B Z +A Y +A X +B Z +B X +C X +A Z +C X +C Y +B X +C Y +C X +A Y +B Z +B Z +C Z +B Z +C Y +C X +C X +B Y +C Z +C X +C Y +A Z +C Y +A Z +A Y +A X +C Y +B Z +A Z +C X +C X +C X +C X +C X +B Z +A Y +A X +A Z +C Y +A Y +B Z +B Z +C X +A X +A X +C X +C X +C X +B X +A X +B Z +B Z +B X +B Z +A Y +C Z +C Y +B X +B X +B Z +A X +A X +B Z +B Z +C X +A X +C X +A Z +A X +C Z +A Z +C Z +B Z +A X +B Y +C Z +A Z +A Z +C X +A Z +B X +B Y +B Z +C X +B X +C X +B Z +B X +C Y +C X +C X +C Y +B Z +A Z +B X +C X +C Y +A Y +C X +A X +B Z +C Y +C Y +C Y +B Z +C Y +B Z +C X +B Z +B Z +A Y +C X +B X +C Z +B Z +B Z +A X +B Y +A X +B Z +C Z +B Z +C Z +A Z +C X +B Z +C X +B Z +C X +B Z +B Z +C X +B X +B Z +A Z +C X +C Y +B X +C Y +C Y +C X +B Z +C X +C X +A X +B Z +C Y +C Y +B Z +B Z +C Z +C X +C Y +B Z +A X +C Y +C Z +B Z +B X +C Y +A Z +C Z +C X +C Y +C X +C Z +A X +B X +C Y +C X +C Y +C X +C X +C Z +C X +C Z +B Z +C X +C X +A Z +C Z +C X +C X +B Z +C Y +B Z +C Y +C X +A X +C Z +C Z +A Z +B X +C Y +A Z +B Y +C Y +B X +C Y +B Z +B Y +B Z +C Z +B Z +C X +C Z +A Y +B Z +B Z +B Y +B X +B Z +C Z +C X +C Y +A Z +C X +C X +C Z +B X +B Z +C X +A Z +A Z +B Y +C X +C X +A X +C X +C X +A Z +B Z +C X +B Z +C X +C Y +B Z +C X +A X +B Z +C X +C Y +A X +C Z +B Z +B Z +C Y +C X +A Y +C Y +C X +C Y +A Z +B Z +A Y +B Y +C Y +A X +A X +C X +B Z +A Z +A X +B Y +B X +C X +B X +C X +C Z +B Y +C Y +C Z +B Z +B Y +A Z +B X +A Z +C X +A X +A X +B Z +B Z +A Y +C X +B Y +C Z +B Z +C X +A X +C X +C Z +A X +C X +C Z +C Z +C X +A X +A X +C Z +A Y +C Z +B Y +C X +C Z +A X +C Z +B Z +C Z +A Z +B Z +C Z +A Y +A Z +B Y +B X +A Y +C X +C Y +B X +B Z +C Z +B Z +C Z +C Z +A X +A Y +C X +B Z +A X +A Y +C Z +C Y +C Y +B Z +C X +B Z +B Z +A Y +B Z +B Z +B Z +B Z +B Z +B Z +B Z +C X +B X +B Z +A X +A X +C X +A Y +C X +C X +C Y +B Z +B X +C Y +A Y +A Y +C X +A Z +B Z +C X +C Z +C X +A Z +B Z +B Z +B X +B Z +C Y +A Y +C X +C X +A Z +B X +B Z +B Z +B X +C Y +C Y +A X +A Z +B Z +B Z +C X +B Y +A X +A X +C X +C Y +C Y +B Y +C X +C X +C X +A X +B Z +A Z +B X +B Z +B Z +A Z +C X +A X +B Z +B Z +C Y +C Y +B Z +C X +B X +C X +B Y +C Y +C X +C X +B Z +A X +A Z +B Z +A X +C X +A Z +C X +A Y +C Y +C Y +A X +C X +C X +C Z +B X +B Z +A Y +B Z +A Y +A X +C X +B Z +C X +C Z +C X +B Z +B Z +B Z +C Z +B Z +A Z +A Z +C Y +C Z +B X +A Y +A Z +A Z +B X +A Z +C Y +B Z +C X +C Y +B Z +A Z +C X +B Z +C X +A Y +B X +C Z +B Z +C X +A Z +B X +B Z +B Z +A Y +B X +A Z +C X +B Y +B Z +C X +C Z +B X +B Z +C X +A X +A Z +A Z +B Z +B Z +C X +B Z +C Z +B Z +C X +C Y +C Z +B Z +B Z +C X +B Y +A X +B X +A X +B Z +B Z +C X +A Z +A Z +A Z +A X +C X +B Z +A Z +C Y +C Z +A Z +C X +A Y +C Y +C Z +C Z +B Z +A X +A Y +C X +A Y +C X +A X +B Z +C Y +A X +B Z +A X +A Y +C X +A X +C Y +B X +B Z +A Z +B Z +A X +C Y +A Y +A Z +A Z +C Z +B Z +B Y +C Y +C X +B Z +A X +A X +C X +C Y +C X +A X +C Z +C X +B X +C X +A X +C X +B Z +A Z +A Z +C Z +C Z +A Z +A X +C Y +C X +B Z +C Y +C X +A Z +C Z +A Z +A Z +C Z +B Z +C X +A Z +B X +C Y +A Z +A X +A Z +A Z +A Z +A Z +C X +C Y +B X +B Z +A X +C Z +C Z +A Z +C X +C Z +B Z +A Z +C Z +C Y +A X +B Z +A Y +A Z +A Z +C Z +B Z +C Y +C X +A Y +A Y +B X +C Y +C X +B Z +C Z +C X +B Y +C X +C X +C Z +C Z +B Z +C Z +A Z +C Y +B Z +C Z +C Z +A Z +B Z +C Y +C Z +A X +B Z +B Z +A Y +B Z +C X +A Z +B X +B Z +C Z +B X +B Z +B Z +A X +A Y +A Z +B Z +B Z +A Z +A Y +B X +C Y +C Y +C Y +A Y +B Z +B X +A Z +A Z +C Y +C X +A Z +A Z +C Y +A Z +C X +C Z +B X +B Z +A X +C Z +A Z +C Y +B Z +A Z +C X +C X +B Z +C Z +B X +B X +A Z +B X +B X +C Y +A X +C Y +C X +C Y +C X +C Z +B X +B X +C X +A Z +B X +B Z +C Z +C Y +C Y +C X +B Z +C Y +B Z +C Y +C Y +B Z +A Z +A X +C Z +A Z +A X +C Y +B X +C Y +A Y +B Z +A Z +A X +C X +C X +A Y +C Z +C X +A X +C Y +B Z +B X +A Y +B Z +C X +C X +B Z +A X +C X +A Z +C Y +A Z +A Z +A X +C Z +B X +A Y +C Z +A Y +C Y +A X +A Z +A Z +A X +B Z diff --git a/2022/day02/input2b.txt b/2022/day02/input2b.txt new file mode 100644 index 0000000..bc98176 --- /dev/null +++ b/2022/day02/input2b.txt @@ -0,0 +1,2500 @@ +2 +6+1 +3 +1 +6+3 +6+1 +6+1 +6+3 +6+1 +6+3 +6+1 +6+1 +3+1 +2 +3+1 +2 +3+2 +6+1 +2 +6+3 +3+1 +6+1 +1 +1 +6+3 +3 +3+3 +6+3 +6+3 +6+1 +6+3 +6+1 +6+3 +6+3 +6+1 +2 +6+3 +2 +3 +3+2 +6+1 +2 +3 +6+3 +6+3 +6+1 +2 +1 +6+3 +3+1 +1 +3+1 +6+3 +2 +2 +3+1 +6+1 +6+1 +1 +3 +2 +6+1 +6+3 +3 +2 +1 +2 +6+3 +6+1 +1 +6+3 +6+3 +3+3 +3+2 +2 +3+2 +3 +3+1 +6+2 +6+2 +2 +6+1 +6+1 +6+3 +1 +6+1 +6+3 +3 +2 +3+3 +3+3 +1 +6+3 +2 +6+2 +3+1 +6+1 +6+3 +3+2 +1 +6+3 +6+3 +3+1 +2 +2 +6+1 +3+1 +6+3 +3 +3+1 +6+3 +6+1 +3+3 +3+3 +2 +3+3 +6+3 +3+3 +2 +6+3 +3+1 +2 +1 +2 +6+3 +2 +3 +3+1 +6+3 +3+1 +6+2 +6+3 +6+1 +2 +2 +6+3 +6+3 +3 +6+1 +3 +3+1 +3 +6+3 +1 +3 +6+3 +3+2 +6+1 +2 +6+1 +6+1 +3 +3 +2 +6+3 +2 +1 +2 +2 +6+3 +6+1 +6+3 +3 +2 +2 +6+3 +3+1 +6+1 +6+3 +6+1 +3+2 +6+2 +6+1 +1 +2 +6+3 +3+3 +6+1 +3+3 +6+3 +3+2 +3+1 +3 +6+3 +3 +6+1 +3+1 +6+1 +2 +3+3 +3 +6+3 +1 +1 +6+2 +3+2 +2 +3+2 +6+3 +3+1 +6+2 +3 +1 +6+3 +3+3 +3+3 +6+3 +2 +2 +6+1 +6+1 +6+3 +6+3 +2 +3 +6+1 +2 +6+2 +3+1 +6+3 +3+3 +6+1 +6+1 +6+1 +3 +2 +6+3 +6+3 +6+1 +2 +3+3 +6+3 +2 +3+1 +3 +3 +2 +3+1 +6+3 +2 +6+1 +6+1 +6+3 +3+3 +6+3 +6+3 +1 +3 +2 +2 +6+1 +6+3 +3+2 +6+3 +6+3 +2 +3+1 +6+2 +2 +3+1 +2 +3+3 +6+2 +3+1 +6+3 +3+1 +3+1 +6+2 +1 +6+3 +3+3 +6+3 +6+3 +1 +1 +6+1 +3+1 +2 +6+1 +2 +3+1 +6+3 +3+1 +6+2 +6+3 +2 +6+3 +6+3 +2 +6+2 +3 +6+1 +2 +2 +6+1 +3+3 +2 +6+3 +3+3 +1 +3+3 +6+3 +3 +1 +6+1 +6+1 +1 +6+3 +6+1 +6+1 +1 +3 +3+1 +3 +6+3 +6+3 +6+3 +3+1 +2 +2 +6+3 +3+1 +3+1 +3+2 +2 +1 +6+1 +2 +6+1 +2 +3+1 +1 +3 +6+2 +3+2 +3 +1 +6+3 +6+3 +6+2 +1 +2 +1 +6+3 +3+2 +3+1 +3 +6+1 +6+1 +3+3 +3+3 +1 +6+1 +1 +6+1 +1 +6+3 +6+3 +1 +3+2 +2 +3 +3+2 +3 +2 +6+3 +3+3 +3+3 +3+2 +1 +1 +6+1 +6+2 +3 +3+2 +3 +3 +3+1 +3 +3+2 +3+1 +3+1 +3+3 +6+1 +6+1 +6+1 +3+3 +3 +3+3 +3+2 +6+3 +3+1 +6+3 +3+3 +6+1 +2 +6+1 +3 +2 +2 +2 +1 +2 +6+2 +2 +6+1 +3 +3+1 +6+3 +3+3 +6+1 +3+1 +3+2 +2 +6+3 +6+3 +6+3 +3+3 +3 +2 +6+1 +3+3 +6+1 +6+3 +6+3 +3+1 +6+3 +3 +3 +1 +2 +2 +3+1 +1 +3+2 +3+1 +2 +3 +2 +2 +1 +1 +6+3 +1 +6+2 +2 +2 +3+3 +1 +6+2 +3+1 +3+1 +2 +3+3 +2 +3+1 +2 +3+1 +3+2 +1 +3+1 +6+1 +6+1 +3+1 +3 +3+1 +2 +3+2 +6+3 +3+2 +3+3 +3 +3+2 +3 +3+1 +6+1 +6+3 +3+3 +1 +6+3 +3 +6+3 +6+1 +6+3 +1 +3+2 +3+3 +3+2 +2 +6+1 +6+1 +2 +3 +6+3 +1 +6+3 +1 +3+3 +3+1 +3+1 +3+1 +3+2 +3+2 +6+3 +3+1 +6+3 +3+1 +3 +6+3 +1 +1 +3 +3+1 +6+3 +3+3 +3+3 +3+3 +6+3 +2 +6+1 +6+1 +6+3 +3+3 +6+3 +2 +6+1 +6+3 +3+3 +6+3 +6+3 +6+3 +6+1 +6+1 +3+2 +6+3 +6+3 +6+1 +2 +3+1 +3 +3+3 +3+3 +6+1 +2 +3 +3+3 +6+3 +6+3 +2 +6+1 +1 +6+3 +3 +6+3 +2 +3+1 +1 +3+1 +3+3 +2 +6+1 +6+1 +6+3 +3+3 +6+3 +3+3 +3+3 +3+1 +6+3 +3+2 +6+3 +6+1 +6+3 +3 +6+1 +3+1 +6+3 +3+3 +6+1 +3+1 +3+3 +6+2 +6+3 +3+3 +2 +3 +1 +3+3 +3+1 +6+2 +6+1 +3+3 +6+3 +6+1 +3 +6+3 +3+3 +3+3 +6+2 +2 +6+1 +6+2 +6+3 +6+2 +6+1 +6+1 +3+3 +1 +6+3 +2 +3+1 +3 +6+3 +6+3 +3+3 +6+3 +3+1 +6+2 +3+2 +3 +6+3 +6+3 +6+1 +6+2 +2 +6+3 +6+1 +3+2 +1 +2 +6+1 +6+3 +6+3 +6+3 +2 +1 +3+1 +6+3 +6+1 +3+3 +6+1 +3 +6+3 +2 +6+3 +3+1 +3+1 +6+3 +3+3 +3+3 +1 +3 +3+3 +6+1 +1 +2 +6+3 +3+1 +6+1 +3 +3+3 +1 +6+3 +3+1 +3+1 +6+3 +2 +6+1 +6+2 +6+1 +6+1 +3+1 +3 +3+2 +3+3 +3+3 +6+1 +6+2 +6+1 +1 +6+1 +3+2 +2 +6+3 +3 +3+3 +6+2 +3 +3+2 +6+1 +6+3 +6+1 +2 +3+3 +1 +3+1 +6+1 +3 +6+3 +6+2 +2 +6+3 +6+1 +6+1 +6+1 +3+2 +2 +1 +6+1 +3 +6+2 +3 +6+1 +3+3 +6+1 +3+3 +3+2 +3 +6+3 +3+3 +6+3 +6+3 +6+1 +6+3 +3 +3+3 +3+3 +6+1 +6+2 +1 +6+3 +3 +6+3 +3+1 +6+3 +2 +6+1 +6+1 +3+1 +6+1 +1 +2 +6+1 +6+3 +6+3 +6+1 +3+2 +2 +3+2 +1 +6+1 +1 +6+3 +6+3 +2 +3+1 +3+1 +3 +6+2 +6+1 +3+2 +3+2 +6+2 +3+3 +1 +6+3 +6+3 +6+1 +2 +6+3 +2 +3+3 +6+1 +3+3 +3 +3+2 +3 +6+3 +2 +6+1 +2 +6+3 +6+3 +6+1 +6+1 +6+3 +3+1 +3 +2 +3+2 +6+2 +1 +1 +3 +6+3 +6+3 +3 +3 +6+1 +6+1 +2 +3+3 +6+2 +2 +1 +6+3 +6+1 +6+3 +3+3 +6+3 +6+1 +6+3 +1 +6+2 +6+3 +6+1 +2 +6+3 +6+1 +2 +6+1 +6+1 +3+1 +6+1 +2 +3 +6+3 +6+1 +2 +2 +3 +6+3 +6+1 +6+1 +1 +3+1 +6+1 +2 +6+3 +6+1 +6+1 +6+1 +3+3 +3+3 +6+3 +6+3 +3+3 +3+3 +6+1 +3 +2 +2 +6+1 +3+3 +2 +3 +3 +3 +2 +2 +1 +6+3 +3+2 +3+3 +3 +3+3 +2 +3+3 +6+2 +6+2 +1 +6+3 +1 +3+1 +1 +3+3 +6+1 +6+3 +3+3 +3+3 +6+3 +6+1 +6+1 +3+1 +3+3 +2 +3 +3 +3+3 +6+2 +3+2 +6+3 +3+3 +3 +3+1 +2 +6+3 +3+1 +6+3 +6+3 +3 +3+1 +3 +3+3 +6+1 +1 +2 +6+3 +1 +2 +2 +6+3 +6+1 +2 +3+3 +3 +1 +2 +3 +6+1 +3+2 +3+2 +2 +6+3 +6+3 +3+1 +6+1 +6+3 +6+1 +6+3 +3+2 +2 +1 +3+3 +6+3 +3+3 +6+3 +3+2 +6+1 +3+3 +3+3 +2 +1 +6+3 +2 +6+3 +3+3 +6+3 +6+3 +3+2 +6+1 +2 +6+1 +6+1 +3 +2 +2 +3+3 +3+1 +6+1 +3+2 +1 +6+2 +6+1 +6+3 +2 +2 +6+3 +3+2 +6+3 +2 +2 +2 +6+1 +6+1 +3 +2 +6+1 +6+1 +6+2 +2 +6+3 +3+1 +3+1 +6+1 +6+3 +2 +3+3 +6+3 +6+3 +3+3 +2 +6+3 +1 +3+3 +6+3 +2 +3+3 +1 +6+2 +3 +1 +3+3 +2 +3+1 +6+3 +3+1 +6+3 +1 +3+3 +2 +6+1 +3 +2 +2 +3 +3+1 +2 +3+1 +3+1 +3+1 +6+3 +2 +6+3 +6+3 +6+3 +6+1 +6+3 +3+1 +3+2 +2 +6+1 +6+1 +2 +2 +3+1 +3+1 +2 +3+3 +1 +2 +3+1 +6+1 +6+1 +2 +6+3 +6+3 +6+2 +6+3 +2 +2 +2 +6+3 +3+3 +6+1 +6+1 +6+3 +6+1 +1 +6+3 +3+2 +6+1 +2 +3+1 +6+3 +6+3 +6+1 +6+3 +1 +6+3 +2 +6+3 +2 +6+1 +6+3 +3+2 +6+2 +3+1 +3 +3 +3+2 +3+1 +3+1 +2 +2 +3+1 +6+3 +6+1 +3 +6+3 +6+3 +6+2 +6+1 +6+3 +6+2 +3+3 +2 +1 +3+3 +3+3 +6+1 +2 +6+1 +2 +6+3 +6+3 +6+3 +6+3 +3+1 +3+3 +6+3 +3 +3+1 +3+1 +6+1 +2 +6+1 +6+1 +3+3 +6+1 +6+2 +6+3 +6+1 +3 +6+3 +2 +6+3 +3 +3+1 +6+1 +3 +3+3 +3+1 +3+3 +2 +2 +3+1 +6+1 +3+2 +2 +2 +3 +6+3 +3 +3+3 +3 +2 +3+1 +6+1 +2 +2 +3+2 +6+3 +3 +6+1 +3+2 +3+1 +2 +6+2 +3+3 +3 +3+3 +3+1 +1 +3 +6+2 +6+1 +3+1 +6+3 +3+2 +2 +3+2 +6+1 +6+3 +6+1 +2 +6+3 +1 +1 +3+1 +6+1 +3+3 +3+1 +6+3 +6+1 +6+1 +3+3 +3+2 +3 +3+1 +2 +3+3 +6+3 +6+1 +3+2 +1 +6+1 +3+3 +2 +6+3 +3 +1 +6+3 +6+1 +2 +6+1 +6+1 +6+3 +6+3 +6+3 +6+3 +6+3 +6+1 +6+2 +3+3 +2 +6+1 +6+1 +3 +6+3 +2 +3+3 +1 +1 +3+3 +6+3 +3+3 +1 +6+3 +3+3 +2 +6+3 +3+1 +3+1 +2 +3+3 +6+1 +6+1 +3 +3+3 +3+3 +6+3 +3+3 +1 +6+1 +3+1 +6+1 +1 +3+3 +6+1 +3+1 +2 +6+3 +1 +6+1 +6+1 +3+3 +1 +6+3 +6+3 +3 +6+3 +1 +3 +2 +6+3 +3+3 +6+1 +3+3 +3+2 +2 +3+1 +3+2 +6+3 +3+3 +1 +3+3 +2 +6+3 +6+3 +6+3 +6+3 +3+1 +1 +6+3 +3+2 +3+2 +6+3 +3 +6+3 +6+3 +1 +1 +6+1 +1 +3 +6+3 +6+2 +6+1 +3+2 +3+1 +6+3 +3+1 +6+3 +2 +6+1 +6+3 +2 +6+2 +3+1 +3+3 +1 +6+2 +6+3 +2 +3+1 +3+3 +2 +3+3 +3 +3+2 +3 +2 +2 +6+2 +3 +2 +6+1 +6+1 +6+1 +3+3 +6+2 +6+1 +2 +3 +3+2 +3+2 +6+3 +3 +6+3 +6+2 +1 +3 +6+3 +3+2 +3+3 +6+2 +1 +3 +3+2 +6+3 +6+3 +6+3 +6+3 +6+3 +3+1 +3+3 +2 +6+3 +6+1 +3+1 +3+2 +6+2 +6+3 +3+3 +6+1 +2 +6+3 +6+3 +3+3 +6+3 +1 +3+1 +3+1 +6+1 +1 +3 +1 +6+1 +2 +2 +6+3 +6+2 +6+3 +3+3 +2 +3+2 +6+3 +2 +2 +3 +3+1 +6+2 +3+3 +6+2 +6+1 +6+3 +2 +6+3 +6+3 +3 +3+2 +6+1 +1 +6+1 +1 +3 +6+1 +6+1 +6+3 +1 +6+1 +3+1 +6+1 +6+3 +2 +6+1 +6+3 +3 +3+2 +3 +1 +1 +3 +1 +3+3 +6+3 +3+3 +6+3 +1 +3 +6+1 +6+1 +6+1 +3+3 +6+1 +6+1 +3 +6+3 +2 +6+2 +1 +6+1 +6+3 +1 +6+1 +3+3 +3+3 +6+3 +6+3 +1 +2 +3+1 +3+1 +6+3 +6+3 +6+3 +3+3 +6+3 +3+3 +6+2 +6+2 +3+2 +6+1 +3+3 +6+3 +6+3 +6+1 +6+3 +1 +3 +6+1 +1 +6+2 +2 +6+3 +2 +3+3 +2 +3+3 +6+3 +3+1 +3+3 +6+3 +6+3 +3+1 +6+1 +2 +2 +2 +2 +6+3 +6+3 +6+3 +3+3 +3+1 +6+3 +3+3 +6+3 +1 +3+3 +6+3 +6+1 +3+3 +6+1 +1 +6+3 +6+1 +3 +6+3 +3+2 +2 +6+3 +3+3 +3+3 +3+3 +2 +6+3 +6+3 +1 +6+3 +3+3 +2 +1 +6+3 +6+1 +2 +1 +2 +6+1 +6+3 +3 +6+1 +3+1 +6+1 +3+1 +3+1 +6+3 +6+3 +6+2 +6+3 +3 +6+1 +3 +6+3 +6+3 +3 +3+1 +6+3 +1 +6+1 +6+3 +6+1 +1 +3+1 +2 +3+3 +3+3 +6+3 +3 +3 +6+3 +6+1 +3+2 +6+1 +2 +3 +6+1 +6+1 +6+3 +2 +2 +6+1 +1 +3+3 +3+1 +6+2 +1 +6+3 +3+2 +1 +2 +3+3 +6+3 +1 +3+1 +6+1 +3+1 +3 +6+3 +3+2 +1 +3+2 +3+3 +6+1 +6+1 +2 +6+2 +3+3 +3+3 +3+3 +1 +2 +6+1 +3 +1 +2 +2 +3 +3+3 +6+1 +6+1 +3+1 +6+1 +6+3 +1 +3 +6+1 +6+3 +6+3 +6+3 +6+3 +3+1 +3 +1 +6+3 +1 +3+2 +1 +6+3 +6+2 +6+1 +3+3 +3 +6+1 +2 +3+1 +3 +1 +3+2 +2 +6+1 +3+1 +3+3 +6+1 +6+3 +3+1 +6+3 +6+2 +3+1 +2 +6+1 +2 +3+1 +2 +2 +2 +3+3 +3+1 +3+1 +6+3 +6+1 +6+3 +6+3 +6+3 +6+1 +6+1 +6+3 +1 +3+1 +3 +6+2 +6+1 +3+1 +3 +6+3 +6+3 +2 +3+1 +6+3 +2 +3+1 +3 +2 +3 +3+3 +3+3 +2 +3+3 +3+1 +2 +6+2 +3+1 +3+1 +1 +3 +6+1 +1 +2 +6+1 +6+3 +6+3 +6+3 +3+2 +3+2 +2 +3+1 +6+3 +3 +6+1 +1 +3 +6+1 +2 +2 +6+3 +6+3 +3 +3+2 +6+3 +6+3 +6+1 +3+2 +6+3 +6+3 +6+1 +2 +3+3 +3 +2 +3+1 +6+1 +3+2 +6+3 +6+2 +3+1 +6+3 +1 +6+1 +3 +6+1 +2 +1 +2 +6+1 +6+2 +6+3 +6+3 +3+3 +6+3 +2 +6+1 +6+1 +3+2 +3+3 +6+1 +2 +3 +2 +3 +6+2 +3+1 +2 +6+3 +3 +6+1 +6+1 +6+1 +6+1 +6+1 +6+3 +6+2 +3+1 +3 +2 +6+2 +6+3 +6+3 +6+1 +3+1 +3+1 +6+1 +6+1 +6+1 +1 +3+1 +6+3 +6+3 +1 +6+3 +6+2 +3+3 +2 +1 +1 +6+3 +3+1 +3+1 +6+3 +6+3 +6+1 +3+1 +6+1 +3 +3+1 +3+3 +3 +3+3 +6+3 +3+1 +3+2 +3+3 +3 +3 +6+1 +3 +1 +3+2 +6+3 +6+1 +1 +6+1 +6+3 +1 +2 +6+1 +6+1 +2 +6+3 +3 +1 +6+1 +2 +6+2 +6+1 +3+1 +6+3 +2 +2 +2 +6+3 +2 +6+3 +6+1 +6+3 +6+3 +6+2 +6+1 +1 +3+3 +6+3 +6+3 +3+1 +3+2 +3+1 +6+3 +3+3 +6+3 +3+3 +3 +6+1 +6+3 +6+1 +6+3 +6+1 +6+3 +6+3 +6+1 +1 +6+3 +3 +6+1 +2 +1 +2 +2 +6+1 +6+3 +6+1 +6+1 +3+1 +6+3 +2 +2 +6+3 +6+3 +3+3 +6+1 +2 +6+3 +3+1 +2 +3+3 +6+3 +1 +2 +3 +3+3 +6+1 +2 +6+1 +3+3 +3+1 +1 +2 +6+1 +2 +6+1 +6+1 +3+3 +6+1 +3+3 +6+3 +6+1 +6+1 +3 +3+3 +6+1 +6+1 +6+3 +2 +6+3 +2 +6+1 +3+1 +3+3 +3+3 +3 +1 +2 +3 +3+2 +2 +1 +2 +6+3 +3+2 +6+3 +3+3 +6+3 +6+1 +3+3 +6+2 +6+3 +6+3 +3+2 +1 +6+3 +3+3 +6+1 +2 +3 +6+1 +6+1 +3+3 +1 +6+3 +6+1 +3 +3 +3+2 +6+1 +6+1 +3+1 +6+1 +6+1 +3 +6+3 +6+1 +6+3 +6+1 +2 +6+3 +6+1 +3+1 +6+3 +6+1 +2 +3+1 +3+3 +6+3 +6+3 +2 +6+1 +6+2 +2 +6+1 +2 +3 +6+3 +6+2 +3+2 +2 +3+1 +3+1 +6+1 +6+3 +3 +3+1 +3+2 +1 +6+1 +1 +6+1 +3+3 +3+2 +2 +3+3 +6+3 +3+2 +3 +1 +3 +6+1 +3+1 +3+1 +6+3 +6+3 +6+2 +6+1 +3+2 +3+3 +6+3 +6+1 +3+1 +6+1 +3+3 +3+1 +6+1 +3+3 +3+3 +6+1 +3+1 +3+1 +3+3 +6+2 +3+3 +3+2 +6+1 +3+3 +3+1 +3+3 +6+3 +3+3 +3 +6+3 +3+3 +6+2 +3 +3+2 +1 +6+2 +6+1 +2 +1 +6+3 +3+3 +6+3 +3+3 +3+3 +3+1 +6+2 +6+1 +6+3 +3+1 +6+2 +3+3 +2 +2 +6+3 +6+1 +6+3 +6+3 +6+2 +6+3 +6+3 +6+3 +6+3 +6+3 +6+3 +6+3 +6+1 +1 +6+3 +3+1 +3+1 +6+1 +6+2 +6+1 +6+1 +2 +6+3 +1 +2 +6+2 +6+2 +6+1 +3 +6+3 +6+1 +3+3 +6+1 +3 +6+3 +6+3 +1 +6+3 +2 +6+2 +6+1 +6+1 +3 +1 +6+3 +6+3 +1 +2 +2 +3+1 +3 +6+3 +6+3 +6+1 +3+2 +3+1 +3+1 +6+1 +2 +2 +3+2 +6+1 +6+1 +6+1 +3+1 +6+3 +3 +1 +6+3 +6+3 +3 +6+1 +3+1 +6+3 +6+3 +2 +2 +6+3 +6+1 +1 +6+1 +3+2 +2 +6+1 +6+1 +6+3 +3+1 +3 +6+3 +3+1 +6+1 +3 +6+1 +6+2 +2 +2 +3+1 +6+1 +6+1 +3+3 +1 +6+3 +6+2 +6+3 +6+2 +3+1 +6+1 +6+3 +6+1 +3+3 +6+1 +6+3 +6+3 +6+3 +3+3 +6+3 +3 +3 +2 +3+3 +1 +6+2 +3 +3 +1 +3 +2 +6+3 +6+1 +2 +6+3 +3 +6+1 +6+3 +6+1 +6+2 +1 +3+3 +6+3 +6+1 +3 +1 +6+3 +6+3 +6+2 +1 +3 +6+1 +3+2 +6+3 +6+1 +3+3 +1 +6+3 +6+1 +3+1 +3 +3 +6+3 +6+3 +6+1 +6+3 +3+3 +6+3 +6+1 +2 +3+3 +6+3 +6+3 +6+1 +3+2 +3+1 +1 +3+1 +6+3 +6+3 +6+1 +3 +3 +3 +3+1 +6+1 +6+3 +3 +2 +3+3 +3 +6+1 +6+2 +2 +3+3 +3+3 +6+3 +3+1 +6+2 +6+1 +6+2 +6+1 +3+1 +6+3 +2 +3+1 +6+3 +3+1 +6+2 +6+1 +3+1 +2 +1 +6+3 +3 +6+3 +3+1 +2 +6+2 +3 +3 +3+3 +6+3 +3+2 +2 +6+1 +6+3 +3+1 +3+1 +6+1 +2 +6+1 +3+1 +3+3 +6+1 +1 +6+1 +3+1 +6+1 +6+3 +3 +3 +3+3 +3+3 +3 +3+1 +2 +6+1 +6+3 +2 +6+1 +3 +3+3 +3 +3 +3+3 +6+3 +6+1 +3 +1 +2 +3 +3+1 +3 +3 +3 +3 +6+1 +2 +1 +6+3 +3+1 +3+3 +3+3 +3 +6+1 +3+3 +6+3 +3 +3+3 +2 +3+1 +6+3 +6+2 +3 +3 +3+3 +6+3 +2 +6+1 +6+2 +6+2 +1 +2 +6+1 +6+3 +3+3 +6+1 +3+2 +6+1 +6+1 +3+3 +3+3 +6+3 +3+3 +3 +2 +6+3 +3+3 +3+3 +3 +6+3 +2 +3+3 +3+1 +6+3 +6+3 +6+2 +6+3 +6+1 +3 +1 +6+3 +3+3 +1 +6+3 +6+3 +3+1 +6+2 +3 +6+3 +6+3 +3 +6+2 +1 +2 +2 +2 +6+2 +6+3 +1 +3 +3 +2 +6+1 +3 +3 +2 +3 +6+1 +3+3 +1 +6+3 +3+1 +3+3 +3 +2 +6+3 +3 +6+1 +6+1 +6+3 +3+3 +1 +1 +3 +1 +1 +2 +3+1 +2 +6+1 +2 +6+1 +3+3 +1 +1 +6+1 +3 +1 +6+3 +3+3 +2 +2 +6+1 +6+3 +2 +6+3 +2 +2 +6+3 +3 +3+1 +3+3 +3 +3+1 +2 +1 +2 +6+2 +6+3 +3 +3+1 +6+1 +6+1 +6+2 +3+3 +6+1 +3+1 +2 +6+3 +1 +6+2 +6+3 +6+1 +6+1 +6+3 +3+1 +6+1 +3 +2 +3 +3 +3+1 +3+3 +1 +6+2 +3+3 +6+2 +2 +3+1 +3 +3 +3+1 +6+3 diff --git a/2022/day02/input3.txt b/2022/day02/input3.txt new file mode 100644 index 0000000..e99c661 --- /dev/null +++ b/2022/day02/input3.txt @@ -0,0 +1,9 @@ +A X
+A Y
+A Z
+B X
+B Y
+B Z
+C X
+C Y
+C Z
\ No newline at end of file diff --git a/2022/day02/input4.txt b/2022/day02/input4.txt new file mode 100644 index 0000000..85f9460 --- /dev/null +++ b/2022/day02/input4.txt @@ -0,0 +1,9 @@ +A X
+A Y
+A Z
+B X
+B Y
+B Z
+C X
+C Y
+C Z
diff --git a/2022/day02/main.sh b/2022/day02/main.sh new file mode 100755 index 0000000..08f922a --- /dev/null +++ b/2022/day02/main.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# gleichstand 3 +# gewonnen 6 +# A X=Rock 1 +# B Y=Paper 2 +# C Z=Scissors 3 +# sed -e 's/\w \(\w\)/& \1/g' -e 's/X/A/' -e 's/Y/B/' -e 's/Z/C/' \ +# -e 's/\(A A\)\|\(B B\)\|\(C C\)/3/' -e 's/\(A B\)\|\(B C\)|\(C A\)/6/' \ +# -e 's/[ABC] [ABC] //' -e 's/X/1/' -e 's/Y/2/' -e 's/Z/3/' \ +# -e 's/ /+/' /dev/stdin \ +# | paste -sd+ + +cat /dev/stdin | sed -e 's/\w \(\w\)/& \1/g' -e 's/\(A X\)\|\(B Y\)\|\(C Z\)/3/' \ + -e 's/\(A Y\)\|\(B Z\)\|\(C X\)/6/' -e 's/[ABC] [XYZ] //' -e 's/X/1/' \ + -e 's/Y/2/' -e 's/Z/3/' -e 's/ /+/' | paste -sd+ | bc diff --git a/2022/day02/main2.sh b/2022/day02/main2.sh new file mode 100755 index 0000000..2acfd50 --- /dev/null +++ b/2022/day02/main2.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# gleichstand 3 +# gewonnen 6 +# A X=Rock 1 +# B Y=Paper 2 +# C Z=Scissors 3 +cat /dev/stdin | sed -e 's/A X/0+3/' -e 's/B X/0+1/' -e 's/C X/0+2/' \ + -e 's/A Y/3+1/' -e 's/B Y/3+2/' -e 's/C Y/3+3/' \ + -e 's/A Z/6+2/' -e 's/B Z/6+3/' -e 's/C Z/6+1/' diff --git a/2022/day03/input1.txt b/2022/day03/input1.txt new file mode 100644 index 0000000..f17e726 --- /dev/null +++ b/2022/day03/input1.txt @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw diff --git a/2022/day03/input2.txt b/2022/day03/input2.txt new file mode 100644 index 0000000..09ed9e4 --- /dev/null +++ b/2022/day03/input2.txt @@ -0,0 +1,300 @@ +gvNbShZZgQfWdQhdPQmggLTFLwmwjFqjVVgM +CsJnHllcsnnnnJrGRnRwPPLVmFLHLBjFFVHmPT +JlnCtctJnJDcJlDCRpPrSSQWfphzWZfbZSvfNfbS +WjvRSdSQjvpjWzNlnZlNZqCCMzZZ +nJtJsbctPBPwLNcDZNNGLClC +tsFJHBgJwgJbnvSHHWVWHhVhpQ +zRzPhCCSHVZzfGHZ +qBsWBpqBwBcvqqWgdfZrprdggPHHVZ +WWmvwvBbnWmnwvWcbmWWnqNCRSDRRSSjjSDbPJbRjClLhC +rQrznfHHhrHzllzlzTGcJgtJ +jhhjjSZVPWVZvSFtTttLTglgFtvm +dqSCqVWdbDSSVqbVVSqhNdrnpnCnfsnnwfnsRpMpBMrf +rTnvrSSHvHtnDQVDtfmW +ZjCglhcCJschpZbZgbtGmRtbGmwtQtbmtN +FFZCghFJhlslFpjcdFTPLHHmrqTMTdzBLHLH +WzDfrDwwDCCDMnfDHHJjTHTtNdngdHtQ +FmScGPPPPmpspchbGHtRsjdJJJWJWNttgH +bvhFlVhPchPvqWLwqLWqvq +RcchVlCCvmhDRjNJJJjbjllZlJ +wPwFGFMPfpdtqbpwFFfGPQZTWTZjtzQWTBBQJzZjZZ +fbwPqqMPwdgvmDVDhmRCgR +SSQggtQVQQgQGmGVthVnWDGjCBLLzdDNCCjDGWCW +RcHcHbFqbPMZRFTvHFFFlcZZBNBtNjjLLjDdjLjDqWCpNLpj +sPPclZcsZtMPfVsnnwwVJhmQ +jlrwpVPjMwfzZfhfwddH +DbQBGgBJPPBBHfPZ +ggGSQTnTgQGbSRQRPrNlsjVjMrpmMLnrrW +MzNNbMSrZNSSvGWWznwGQlTG +ZCFCJHqJFjqTTqngPwPG +LCJLJCCFtfjsJCMbZSMSbbcDdBfd +LCdjljfJJBfLDCCdJqGqsGGtmBsWtbGmSS +gpgchRcPgRRQNZcpNhgNPzzmGrmrGwtSSswqrSGbbTzt +QgQvNppRPQcggZNccchvNZgCjlnsDLDflDdfjLfMDVsMLv +jfSfTWfwTJffQQNwTCHnGGGgHbgqGFvF +LmspctdsLDlBLPmFFgqbqFFbqlnSRS +PSZZsctsDDtdBmzBLBSmpJjMzWwjVfwJVMrNfwrfzf +zFZqbRNRHNHhqHFqzNnzzqDQVFMggMgDpmJMTgpVTQFJ +SwLVsSWBfStDGMfDTDGGGT +vlCBVsSvCRrHRjCqrn +ndGVddlVdrcGlGcljdVGjCgfffPCCLfCMvqWvPnqgn +FNtRZBDDSNSNStDhFRNQtLgCMTCBqvLMMTfJqBLPLP +bwQwZhSDFhZbFSNccwzwHmHHjHMwsd +BrSDgqrgWzWDwJBzMDWBLjpmVLFfFPLVJjVVPLFV +cNnRlvNRvQTcnZwmfQGPmfVFPP +dsCNllvTdnntTlTsHcdCRtNRBDWBDWDrWBhDBqMBDqbzWwCr +stLcchcTwRcsVTtftVVthchqmmCCFvWmmgSgQFCwGvWSFCrr +PljDbZbzjllHdQNWHMFGrMMHMFrmmM +njjjzbPdqRcRQQns +BTBLwzmqWNbpzqNzLppLBnhZJcJSHThhnnJZHHSQnr +RfQgDjgsjVfRFDdvddtvhhhJCnrSnMZCcMSCSJ +QRtjtRQQlzlqqzzzBW +FnzllplJMntnzptLFzsjTVSQcSjSjQFFmdQQ +wgwrBrwGHPGBqHrDcpmjddSQTmTGVmmG +DBhhNBrCrMvNvzptpN +LgSbLLRJQSzLCgJRJhWCCzRBdZdcMfcHsMdFFjfPjsCHBc +nrVTnmrrrlnGGmrlVwVZPFHmdsZHBmjMcdjfcZ +wrnTlNpvVVrqFrtnwGqwwrTpSgSQQLbQRzQSQRJbQpDbQz +pgvmcpVcpwJppwgwvMWfHbRGRHDBJbWGfGGb +hQqFqQNhqdCPNhTQCCFbbjmBHBbBRjGHBDBGFj +TtdCCNlPCmssnqgvzzvvtVrgzzrc +JltddTSgtLLvgvdldgvWPZPPSjWMjCfWNjNWPG +FrwpbwhbmfjGRpGPNM +cmBrBcBnmFBQqcFbscBhQfttznJgzlLLDlnglzLLlg +mDhRsDzWZzGhhhWpZwzwGdfbFsfFTQTLcNFfFrNvvcbT +ngMHjjgVgqHnPlnqtnClMHbfCJFbcLFFJFLbrQNbFQcQ +SlqHqVVqPnBHSHHljlMndBdZQphRhdGpzWmWWwBh +hVNhcfbSSNMfjjMlqRCqpdzpRJdnhl +sBHPPwQwttBBssLCHzDBlDDmRmpJdqJJJd +sHHwtsHTWwtZPHtZbbVSgMbGCNjNvN +SgMtSMVChFBHBFdCwhdqPcPsbRVQqsblDbRmlc +jlrLWfvWvzWWzmcQcqcNbmNDjR +JpLznrnfGrrfnWWzTpfvzvdHHCgSBwdlTMhCTMFhBBwg +fptnFPLsttddDdRhQShQzC +BqGHGlqmmGmlJmNmqlbbCzSCQHDzSjHhfSShjfVh +fbrrMqGGBlNMGNqrqglmrLZwFcwgFwsPcscctpWLgn +TCMMTtWBqCMMMWWMSWhNFhlNBNlNHwNDsvhw +frfdrbZJrVLdZLbnJcrmvhlhHshlgsZsHwwghZ +fLRVvcvRVpfbcfVVJTqpWCCSqCCTTtjjPj +vRCGzdTtvdBCTzCdmVsQjnVttngthgnQHs +rLNZlrwrjrFLMsggsQpsQngqMq +NfjZWcbffDrLZfNLbDczvmcTvvGCmCBBmSdP +DSqdzrHgJtSHMgvmnNGdcmCnvssN +ZwQLlVlRVVWZFZhbJZVjRJscvBGcpssLpBcnGpBsmpBs +TwwjjQJTjlhwMfTDgMrfgtqg +HhvVhgddvdvqTqVqHQgjgmCPWGrcWsGWPcvlsWrWmC +lbJBBFbMlJFRCmsRmRPtCtwm +FMLLpDLnFpFJbDfLnZZSzhqHVdVQjgSdlQTZ +mvBrszzsrrrGsBDvBvszDRQDhjCwWdLhJdCjjWZdqqdZdW +gMlfFVccTGMGPMSCdcLLdqhjLJWWdZ +VfggggPVltVSlSlHfgFtTpfRGmRrrrvQpQsrGmnvnQbzmz +HjtMgWbHBtbtcggVcHwMwcdzpZFGzGZFpvFFZZWnnpFG +RNNrfmSrSSzdGBzFfJFq +mNsSrrTPPRshmsBClRClPmSccVgQVHjHwtHwTMbTVwMHgg +pZmmLpQLDJBCPCssJTsCTc +SwlLwWvSwNSSSMSMfWLvvVdPFzjfTscdjcCsjzCPddFc +vbVMqGbLSVMhDQnRRQnBqH +lNmNwlmlbhhfFNgpJLnHfTHfTdnTML +BGvCwVGVPSDWDMMJTHZMpndH +rVcBrPSPCwWqPwGCBCSrqlNNQFhsQhtlhhhgNQtb +HqZCQRQgWjpmZHRHqQjttGGJQNQtwQGGGbGrJz +SlddfFVMLncbJJMzMzzMwD +ndSznsdVHsqgpZvH +sNStMtNtDztrvrRGPRRRRrNzqcchgJJLqnBScBcJThJggJBT +QCWWZbCbCVjVbFVFbVwbnhqLqhghBLwwTqJJcpgTBL +ZlHjfHHFWFjCdbHlQFnfdnZFMzPzrrlMrtrrGRMsDPrGvGPz +NnDHhNNldhNTdHllpptCRtftzmGBGmVRVGRH +wgZgZJLBwqgLSWrBvZVVzmffWzRmGsGmmssm +bgqPBBLbPbrrZBjjlpjccjDdDchFTNlc +WRWNNRWNfLZtsmtSWrtLmWgTcMcPrpMTcVMMPPBBqjcg +QJJDFbpnpJdlcwcgBTqlgPwc +GJFHJGhHnpWWShpsRS +DHDZvDQWdHJMHlJf +RhhnGLnBtGrnLjwwJTTMTdQccllSMQ +rmFrrBGQLQFLjbFnBhQLhrRGCPVDWzgmpsWvWWDzppWpzCvC +bsrJrWgWJvQRqbbRDNGGZDlwNfNfwS +ttCHThhhcBVpTBcdhdpfNGDSQLwDLfDGfQllCG +jFjzcFhzQTTjHFvJsrPPnnFgPb +SZggDgNLGCQzSgRsljscPvPPbHsBNc +TtFfTpMthzhFFTpdMMJPfjPPWjBbHbjPlPPBjj +dpdttMMTJttzMFhqFwGLgGRSrrQGSZrwRrDQ +JsJntWmghjgJTpfgFCczlztzrDZDtDzC +QddBBdBSPPPHBSVHVHvNdPVRClvlcclCDLCLFRFrrDLcZc +NVwBVSNlSBNHngnngsJWhwWh +hQVWJGWJlJQDGJHQWHpVWJVHmfPGPcjfdLdLSrcCmfjPjCPm +wgwnRwMvNvBvFZMngNvFZCjdSSfcbPLjCbcdCbSf +wgnRvMMvjMsTwngTgnnDVDWJDplHWhlhQWlWDT +WGswWFGsBFwHvjnbnnJjbG +gLDrSrPpLfmmDqqbbJZsjvmvRv +DTldTpTsDLgSsLpfPTslVdVVdNWVzcNwtWdWhzVt +sttWrhWZsLVtJVZrWhgbCPQQbDNVCHglnnlN +vvRRRMqpmTjwFqmfjFjmBMwNbCwQNgHgDnbNnHQHQCDg +THpvmBGfzWGzSzzS +nmZwwfPmNggwgPgNmdvPPhTRHTHBJTsvSP +WDccMzVQzGWcrllLdsGTvTsJJBLTdL +pWtzQrzDlrCpcQztlzCCCpCVFFFwtgmfbjmbqwZjZfmFwfdw +bmMNNMVSRWBWCSmVRdMRmMnvZZscvvszGcnZClpcGsvZ +gfLfDDtDgjgDtWTjFQjHsvvpZqqplfvvcllcnnvG +TFPjDtWPNPwBBBNB +QcTCHcTwdpQgcWzWwvMPRzSGwW +sDNjfhVmnlVffmLNfLbMPPDbqGtMSRWtDMtP +fZjJJshhhLNnrCJScHSccTQQ +qfhBhLLjvMqWWBWjsQGrdrGzpszpGrqd +JTSDHFtlTDbHTcFcDbTHzmrNRdRRbNzrmRRnRpnQ +PHcltTgJDlplgptScCfCgWMVfvfZvhMMBV +rttDPglHZZDDDPHgZtgWBswdsTfpfdplLqfsFfFdfd +cRVvpcmpmRSCGGCcMQmQFqNNqdVdqTbLwNbdFfFs +zhGjRhSvcMtnrpZjHZBg +STNrrzVdTJwsBggwFgBN +WbtMWJJpwpDsLBfP +cbvncCCmWtCGMcZHVVSlJVQrzvzVqQ +MtPVBHVbBBTwbvWgRgvF +LhZjZpnnMRwWfhSh +LQcQCLCCCcnmnqZpcrpnrjQlsBMHddtMGGzrJHPPsHsNPPJz +NbZtmZDmNNDBHBhDNtNGcvpmgLmmFrvprgrFGv +djMjffMdqnVVTdMfTPnQSFScFFVSLLFrvccvcllL +PPdPwMQwTMWDwBDZLHZN +DqpJFdhtmdSwpqSncljHsnfjqlbzlc +rQVZLGMWPCNrCGMwNVMcbzsVgfHHgfncfscssH +NBCrPLwMTrrMBLQLwCFhpFBDFdFFtdvDFvpD +QRwGBdGwqRTBMWRMMzBqQHHhngspPFFbHbzgbhZLLP +rCNmDjvrCFpvLZsgPb +lDrmpcfCtVDtCjlfNfQQqVdJBQWRVVRMMMJQ +zcgjlRcJCFtlnTvppn +BLSHDMVPVPHVHwFwMhTvgnFZMh +DsLSDdmPVNVdGgrzCCdbjc +tjjRbNQtvJVVsvqsvdTsGqBp +wlFLPZPzzzrzwZPmZfZPlrmpLDCpWDWCSTCpppDDBssdWG +rwwcFFghFmgTcNRJNnnNJtHV +RLhbzMhccqLzdjghdFddNWPN +DmsTZfvrfJLPPWwrdFgw +LsmDtQDfLLGbGQbSzcpM +qwhmmHlHmlwChcCWlpPCBzjPVdBzLsdLBVsT +DnJDMqRDsPsjRVQR +tSGSnNNSbrJJGfDSSfbchpvptFwmpcvlHqZlcF +rdQdBRPrQBBnfdBbzLLgLgmbzSLCPW +TcRTcFDTcjvswMWzzgLSzwwSLJbL +MNTRMNGTsFMMqqqcMDTTnfpBhQhNpHZBZHBfrptQ +ZZFwcQGwRGLTGLTl +rJtMrqBVvhBCnlCn +WWWMttbqqzfPWqWJVzmDQwFQlwZwjQfjgFcZ +RhgmdBbLLmRvhGZwhZZJDwGq +ldPpTtTPtVPpfTGzJQFGFqJsFG +MPpCnrlCVfPtrPVtntllnbdHSbnBvvgdgHgnWvSv +nbnfjQbQZBqBvjQdVFGHhsQhsFsFzGpD +RSJSTTcCVTTMlSNcSTRRwTccpwDFDDzFhHhtwppssFGGpsDp +clcTNJlLMgrcgRvBjfWVfWfBrrZn +LHQdpQLQDRcDBQccVQpnNRhllzMtRqzRztTNnt +mrvZPZvZvZbPSFJrSrggFvrJzbhlzttTlNtqtsMtTntntdqq +GPfJPJwfZFrmFvrPmgHHQLQWdHQBwWWCHVVC +TvTTLfflhZmwZLvtJmhdFhMpnWrpnbJcWMnpHzMrzbcn +VqRRNGCBjRmqPGqDzbHMcMccWnzngHnP +jNqNBjsDsDRCNVsmBRNQNRSSSddhZvLhddZhvhwvLTZwhSfT +vjpJvpgpNwjDWvvJLhFLLhNRTmPTRPRF +HHbHVrMHMmqzHlGmtGqMtdLCLQthQQPCSPTSFLLPRT +bZZzbHszMrqzGmrHMBzbHbqJjffcDgwWjDJpnjjcscwgnw +fBHDMNhhHMrBDBrfQqfwwvvLvfjLZZ +lmppmGJgPPpddJVdnwsQjLttqtjZTpcsvT +RndRmlGWJgdRnWQJQgWdQPlFFbhhbFbHbHMhhBbRDRFrrS +tVhwlMdMWlhlZMZMlzWrtRpBNpLPpmnmCPQBLppPPPBz +GvGTsgjcTLRQHmTQ +gGRGbfbgbcSbbcRggvfcwlZVhVMfltddVtrlZdhW +PwjPHwWssqrHqCqprpCPjwrrQnnDbdnQnGQHnbZbGQZbBQdD +WvNtLhfLndnBNbJJ +fvhvvWfTmtzTmjpsVVqsPzMjjq +GjHMMTMfZbnqHnJNCN +rlpQpthdlQbnlJqRzqVL +spphwcpBvcvdvFTqPDFfwwPZTG +mQfqmtpfBHJCHdlMDB +cbbPPsZqjqcSvVsCrDllsrdzrzzD +TSbVTvShqnVjPTPbggSPbNFQWGtfNLtFfWgGmGgGWR +HJtwgJJwJrcjRRjRnwhVdrVbmGhPmNNrGhdV +fWFvTDssTDMCBCWsvszWWMCQhZhLLNvNNbhVGGZdRZRdmhmd +zCTBzWzDDCDCfFCRqCJHcJJctjJSgHpqHqJg +dgnwgbcwVGbgDWnQbjdgDnBRBBNNqRLBNMLFRMRlqNsc +fTZHmTmzJMmSSCZChZvZTHRlBNBFqtqftlqssqNqftts +JTHJvhzCHpmPCSSTzPpPzJHgQVdQQjQdQwjgdpgdDMGgQM +qPGmWLJWBRRdvqvvNq +TnZHsTZsZsZZbDtbrNrdnDft +SShhQQZCHQCSTVlllVVQCjQWNJGFWpWgFpmmVmNgLgFpGw +TsSmttWMVstNfbMfBcpnFchFwFwZNrrwFp +DWWCGlHWdhddwpcrjh +gQvPqglRCHCHCPCPCJbbtSVVWtTVVJvTbs +ddHSZQHDStZStLtsdDpbCbBPcjGGCqCMBGdNPb +hWhvmglVznzglgzvzfznwfnfscswPjbMBMjNGBMPGMcjcPwP +sJWsJfVflWsnhrltrZLFDDRRFTSSLT +qqCqLNjnPPLZPjqnDjLNgnNrcGwtgddGrhprBJhhJtBGJG +lTMDsDHmlRRbQQbVfMHFmMBJhwcTddrcpBBGdGGJcJdB +lHFfQFssFFFMQRVWQVlssLnDSLLPvZZPqWCLWSqjvS +pJPZRpQtpPQpGPqWbqlWTdLVLJbT +nnnjCwgrgcCFBfnggBCsMTVbVsWVWdCTTdbb +cfhcnwnrcggrncrwcjBDcGHmNPRRGRZZQRRdDZzmzH +NqTrrzLpTNdLLJBBcBGGZGpFHB +sWbgfHSfSgVgZcmGtStZwBFG +VjQjjPjhbbfsCbbDQCgsDrRhzMdlNzHTRdRhqdNTrq +GlqfPdvdBqPgfqDgFMsMVDppbsNJNpMs +WnmmWCTCjZnmzRjTZRRnFBMNpbZZpFJMSFSNFSbS +TRRrnLBmzjttRRCmTRjjwLlvdhQvdrhqqlGdPqGggPlQ +McjMPgPgGPHJWjhPNgPqQbpQSfqffnWVnnnpnZ +BwwDmBTLRBBLzBTBTvtVqlfpqfbQqpqZbnQFlt +rDsDBsmvRTBRzCTZsTmCsCrLPgNcPHNhPccNHHrjMNrgdNdP +GqmLFDrcglvQGZwwzj +nlHbSNBhhslJfsBfvdZHdCvRzdCzppzR +JWShMfWMMthSJBBthJsgtcTTcFqcTrmTLrrTlr +CsBsShBWsBWhvFJWCSsJpbTZdTbdBRgHffRlHHHBgH +tqmnwwwDmVwfzZblzTRqzQ +DGtDjGMcntMGnnGhhjJJJsCpFRRSJJ +GQVVcGgFGcSFvfcFfJVnQmdbTwMLwTTnbnQMws +ZqZrDWDtNPPHRNPzGCdndLLMLwMWhwbmLddn +DRqRHCHlCtDrqtNqDplfpvGFjVjvBSFFcj +zfSfdGPdMVHHdcMThhpwqqrwrqJhcF +vlDNTWDDWWnngNQZtgwLrJZqLFZLFJpFJjJJ +NCtWmnvBmDnWQVTmTGSRmmRTPz +LLvppVLDsppGMGCLCCwNmJMNrNHrNmNNmHFjrh +lZZfvfgRPZQWNNmlWlFNHl +nnRtndRbcPttvTpswLTs +trtzWfszNPlhPlgrWglhZjSLDBvTfSDTmSvmLvfS +QMdVVGBQMTJDvSjdHJ +nBppGVVnQQgzgPsPzzhp +fVQzVrQVtVzHwjtMTjcTCjFgcDCGCd +JslDPWLbLbZlJBMgBTBPdcFTFd +JNJmZsDLnLDWmsVqSrHqnHqQwQSq +mLMZRMRmZLmHLLjNshrrJjRsNNsj +PnqnBVBPcpWrWfWzDhDsHW +qpBQgcQncqpBcVgtclHqcSMTLZZQvLLZdLdwCmLMSd +PZgMwZMjPgBCWgZFgmBGSTtwcccztTzbnGDcNT +vJLlvvlfdsVVslVHrrpLfRlDcSScmbSnnRGDnbDTSbSSDt +fvVHdLfLQljmmqqMQPhQ +DZRstNGrDWGRMlzLHLMpNSpp +bPgCrCvgnrCPgwplbMSjfHzHfj +CgnFnBVrFFVmdVggmPPVTTcZBGhRqGtcZqqJhGRGssWs +WrrCGrDlWhBBZtHB +ggdcnQpcPRSpzfvJBTfPJvtP +gSNnSBFnSMBNjpMssDmCrrGmCLqq +szZGZGGwNdVtpwvbzptzVBQQLFclTJQFlHJNcFBRRJ +CTrqSfWThWDjJCcLQRRRFLlQ +rggqfMqPWnDqnVbZvTtPZpssVw +GJHqPPcJnhthNHnL +rzzlVDVTQDzSSdsSlzpBspssLhmZNjhZWjjffWBLZhgBmnjt +TSTQTsnTbDsMvCGwcFvbJR +PPjtzdnCnSjSthPjWJgJWjgMNBsNrT +bZHfLLhvhpbfvLhHfQbqpNJTWWNsqNTrTNrgWN +ZFbZZFvlRvZwhQwLDSdGnmCGmnlmdznD +RFRRhzzsRsszRlhbrhgBcbTfHgBT +pJtNmSgwZNtSJLgSqHcbBDDTHPfrSqTc +ZNWdpNCJtLZpQJLLpmLtZNFGjVgFnsngRGllVsjjCnvs +sJVRJmmmwwlmzcszMzjRjJVzspCZBsZTTFpTTZvSZTFBFbtZ +GhNDgNWnGGqDvFSCZvbtFpvg +fWrCNNffGnhWdrPhWjwjzRlJmcjRcPzlmV +FdncmqmgcZztLWFvFFvjWLlT +RsMMJVpfhJVsDVMfJpvlTWTvhjQSQvCbLCSC +jDBjRrsVfNJgzdZrZwtmZt +THDDQLZTGQQLQDSSTBCZSZHfFrvvlVRRlPVFfVrvqnvnnH +VbWWcgbNpjgPrRvrNfqnzv +swggwpJWwsWscJsDSLTJTmSVZJTBDZ +wGsznPGGBHdzHhtHDD +WMVSWqVmrSBMpvWVMFtdClhDtqDDHhdtQt +RgWVRcmgnPPnjJBg +BmfPBHBFswLLjQQnLCnzzW +SRdvvRSGrdlRSvTgRrMVCjVWCZzMnVZhWzTj +vlSRJrRJvbGGrSSJgWvlScptFmwbmfHHBfsNFmBbfsFm diff --git a/2022/day03/main b/2022/day03/main Binary files differnew file mode 100755 index 0000000..6f77a3f --- /dev/null +++ b/2022/day03/main diff --git a/2022/day03/main.c b/2022/day03/main.c new file mode 100644 index 0000000..69068fa --- /dev/null +++ b/2022/day03/main.c @@ -0,0 +1,36 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +char getWrong(char *line) +{ + char *middle = line + strlen(line)/2; + char *a = line; + char *b = middle; + for (char *a = line; a < middle; a++) + { + for (char *b = middle; *b != '\n'; b++) + { + if ( *a == *b ) return *b; + } + } +} + +int main() +{ + char *line = NULL; + size_t len; + int prios = 0; + + while (getline(&line, &len, stdin) >= 0) + { + char wrong = getWrong(line); + printf("%c", wrong); + int prio; + if ( wrong >= 97 && wrong <= 122 ) prio = wrong - 96; + else prio = wrong - 64 + 26; + printf("%d", prio); + prios += prio; + } + printf("\n%d\n", prios); +} diff --git a/2022/day03/main2.c b/2022/day03/main2.c new file mode 100644 index 0000000..17daa38 --- /dev/null +++ b/2022/day03/main2.c @@ -0,0 +1,45 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +char getWrong(char *line, char *line2, char *line3) +{ + + for (char *a = line; *a != '\n'; a++) + { + for (char *b = line2; *b != '\n'; b++) + { + for (char *c = line3; *c != '\n'; c++) + { + if ( *a == *b && *a == *c ) return *b; + } + } + } +} + +int main() +{ + char *line = NULL; + char *line2 = NULL; + char *line3 = NULL; + size_t len; + size_t len2; + size_t len3; + int prios = 0; + + while (getline(&line, &len, stdin) >= 0) + { + getline(&line2, &len2, stdin); + getline(&line3, &len3, stdin); + + char wrong = getWrong(line, line2, line3); + printf("%c", wrong); + int prio; + if ( wrong >= 97 && wrong <= 122 ) prio = wrong - 96; + else prio = wrong - 64 + 26; + printf("%d", prio); + prios += prio; + } + printf("\n%d\n", prios); +} + diff --git a/2022/day04/input1.txt b/2022/day04/input1.txt new file mode 100644 index 0000000..9f9e9cf --- /dev/null +++ b/2022/day04/input1.txt @@ -0,0 +1,6 @@ +2-4,6-8 +2-3,4-5 +5-7,7-9 +2-8,3-7 +6-6,4-6 +2-6,4-8 diff --git a/2022/day04/input2.txt b/2022/day04/input2.txt new file mode 100644 index 0000000..0f2f19d --- /dev/null +++ b/2022/day04/input2.txt @@ -0,0 +1,1000 @@ +23-33,24-65 +10-24,23-88 +71-92,18-71 +2-2,10-95 +24-26,25-66 +19-93,36-99 +12-99,5-13 +13-88,14-94 +4-85,5-84 +78-88,79-87 +13-82,13-83 +3-98,3-99 +27-69,28-89 +24-47,23-66 +43-48,29-49 +2-99,2-98 +3-77,21-65 +10-90,89-93 +64-75,63-75 +97-99,1-97 +48-65,49-64 +18-26,25-28 +85-86,26-85 +82-89,69-83 +21-93,93-98 +73-79,46-81 +33-52,32-51 +1-99,99-99 +11-36,34-40 +31-88,32-89 +9-19,18-35 +9-84,83-83 +34-82,4-83 +33-33,24-33 +34-83,83-90 +11-86,10-86 +48-48,3-50 +8-92,9-91 +16-38,15-37 +4-84,5-93 +70-75,41-79 +40-48,47-92 +37-41,52-89 +3-3,4-91 +27-77,27-77 +64-90,33-52 +28-40,9-64 +2-73,3-95 +17-94,7-75 +6-71,7-71 +11-69,10-70 +4-40,4-40 +9-54,30-44 +92-93,4-92 +62-63,63-67 +7-34,16-34 +54-55,31-54 +12-90,11-91 +11-13,12-53 +10-73,9-64 +13-18,13-84 +6-82,16-81 +52-78,18-53 +22-82,23-74 +90-91,3-90 +92-93,70-93 +18-44,19-45 +20-20,20-67 +31-93,76-93 +25-86,86-86 +6-73,5-94 +75-84,74-86 +50-51,50-51 +56-86,57-86 +18-81,13-18 +3-9,8-93 +31-36,34-34 +19-88,18-87 +10-95,54-79 +83-85,66-86 +32-68,31-49 +14-97,12-99 +42-42,42-53 +27-32,28-69 +96-98,15-96 +25-49,25-48 +71-81,15-92 +19-83,15-19 +14-99,6-14 +52-90,53-94 +5-98,85-96 +18-30,10-15 +4-86,4-98 +54-55,30-78 +85-99,62-86 +10-99,10-98 +4-96,5-95 +6-59,7-18 +6-86,1-7 +28-85,5-84 +3-82,2-82 +73-92,87-87 +2-3,2-89 +4-5,4-8 +21-96,69-97 +89-90,4-89 +28-79,29-80 +35-58,40-48 +96-96,3-97 +17-27,16-96 +7-99,8-94 +26-92,25-92 +17-24,17-25 +44-44,40-47 +57-64,57-65 +60-91,59-79 +23-79,22-71 +34-37,31-70 +22-60,22-59 +44-99,98-98 +9-57,49-55 +61-64,33-62 +15-68,4-15 +53-55,34-55 +13-13,9-15 +2-43,3-81 +17-56,16-99 +1-4,3-92 +76-77,73-83 +2-97,2-96 +44-45,44-55 +8-89,8-97 +23-73,22-88 +23-90,79-93 +23-87,86-91 +3-45,17-44 +7-99,8-98 +92-97,14-92 +85-89,59-90 +7-8,7-89 +5-90,49-89 +28-30,29-63 +38-61,38-60 +32-98,5-75 +22-87,71-76 +5-85,5-88 +16-96,18-88 +39-51,40-90 +21-21,19-23 +22-55,15-56 +1-75,35-59 +13-84,12-85 +11-83,23-27 +11-98,11-97 +35-92,34-92 +8-96,8-30 +48-72,33-60 +9-83,10-82 +97-97,10-98 +5-7,9-98 +1-44,3-43 +7-85,8-85 +12-32,12-52 +1-86,86-86 +3-63,4-63 +3-83,83-91 +74-88,38-74 +92-95,6-98 +11-19,10-20 +6-94,7-94 +39-90,38-42 +60-92,61-92 +43-94,44-98 +23-98,22-99 +31-41,27-32 +9-79,9-78 +63-64,11-64 +82-82,83-98 +78-79,77-78 +19-63,4-27 +26-62,27-44 +91-91,91-93 +16-94,31-93 +23-25,24-99 +78-79,11-78 +30-30,29-31 +34-85,35-84 +4-78,4-5 +42-84,43-85 +39-87,40-86 +49-84,50-84 +67-67,7-67 +38-38,62-67 +2-83,3-82 +14-33,32-68 +18-76,17-75 +68-77,68-76 +4-97,53-73 +53-97,54-96 +53-55,54-98 +35-95,75-83 +2-3,2-78 +3-97,15-96 +26-87,26-92 +4-10,9-48 +3-89,22-96 +10-85,10-84 +1-93,2-2 +24-37,37-62 +32-68,48-53 +33-96,95-97 +9-26,14-31 +16-66,13-14 +85-86,78-85 +65-82,64-81 +5-85,31-49 +47-88,59-91 +34-71,70-76 +14-14,14-14 +45-46,45-97 +63-73,63-64 +16-54,17-53 +87-88,51-87 +20-79,19-98 +3-96,2-95 +86-86,60-86 +82-82,67-82 +12-35,11-35 +15-31,26-52 +1-2,1-99 +3-96,2-2 +91-97,11-92 +41-89,42-96 +62-64,41-65 +54-54,16-55 +28-41,40-97 +15-89,89-90 +50-71,55-70 +30-66,30-93 +89-92,84-89 +25-27,26-84 +59-91,60-91 +4-11,4-98 +5-48,10-44 +53-80,77-79 +20-21,10-20 +14-86,14-85 +32-70,33-69 +94-94,26-95 +5-57,5-97 +38-50,38-92 +48-50,49-51 +13-98,12-98 +90-95,24-88 +90-94,67-91 +1-11,10-91 +48-59,59-91 +26-68,31-55 +15-56,21-57 +6-69,7-69 +6-8,5-95 +32-93,33-94 +13-73,14-42 +1-4,3-98 +30-62,29-62 +57-64,61-99 +12-27,11-46 +28-99,98-98 +7-83,8-92 +56-77,56-76 +30-89,31-51 +69-83,37-72 +11-78,11-65 +61-61,60-62 +38-65,65-66 +20-44,21-97 +39-76,40-75 +10-94,11-93 +33-90,89-96 +23-77,22-78 +63-86,62-73 +42-81,35-43 +34-91,34-55 +12-97,4-13 +1-98,1-97 +23-72,24-73 +14-99,13-99 +17-97,18-96 +65-85,14-66 +68-77,67-69 +8-96,9-9 +28-57,29-56 +14-26,14-26 +6-72,6-72 +49-49,1-48 +4-65,65-65 +53-92,54-91 +48-87,15-48 +51-54,20-72 +65-75,64-64 +4-92,3-93 +42-70,30-98 +15-71,14-15 +29-62,28-63 +6-92,6-93 +37-84,83-83 +1-99,23-98 +23-82,24-88 +2-60,61-74 +3-5,17-93 +50-63,51-62 +51-55,52-52 +30-82,5-83 +5-77,4-42 +44-99,3-99 +18-81,5-18 +2-32,32-32 +50-59,58-87 +23-30,24-40 +70-70,9-71 +40-62,49-62 +2-29,1-3 +48-69,48-49 +48-48,47-93 +5-42,17-41 +11-95,12-92 +9-66,8-65 +32-84,33-84 +16-69,15-99 +12-96,9-12 +69-91,68-70 +14-69,15-81 +96-99,50-96 +35-62,35-61 +6-22,22-60 +20-76,73-74 +4-21,4-22 +22-30,21-76 +5-90,1-6 +82-96,82-95 +18-31,19-71 +29-56,50-59 +11-21,1-61 +15-76,30-81 +1-1,2-83 +11-90,90-91 +40-90,40-41 +68-83,68-83 +25-81,25-81 +87-88,22-87 +31-65,32-64 +17-90,16-90 +11-65,11-12 +35-60,36-93 +5-93,4-94 +28-29,27-75 +12-38,37-45 +39-46,32-44 +12-89,12-97 +4-54,52-52 +5-94,94-94 +30-31,29-31 +18-82,74-76 +80-80,59-81 +3-65,54-54 +20-31,19-23 +82-87,32-82 +41-41,41-42 +6-6,6-81 +2-98,98-98 +84-94,6-95 +29-89,28-92 +27-30,28-34 +5-86,4-86 +32-96,50-96 +28-93,69-90 +75-75,27-82 +9-30,30-36 +76-76,61-77 +74-80,11-74 +48-61,48-60 +64-98,64-99 +83-87,5-88 +23-25,25-98 +55-55,39-55 +5-36,5-36 +45-57,46-85 +4-86,3-85 +19-58,20-58 +25-83,14-26 +27-74,27-27 +17-18,17-45 +81-88,62-84 +84-96,21-85 +3-81,1-2 +54-93,1-94 +1-1,3-66 +69-78,49-78 +47-93,47-93 +13-13,13-66 +18-78,18-73 +11-20,15-18 +52-99,51-99 +2-57,1-58 +9-97,10-97 +80-80,24-80 +33-77,34-47 +68-75,67-73 +20-95,19-95 +4-99,5-98 +8-85,7-85 +42-80,66-82 +22-47,31-47 +22-26,24-24 +4-98,38-44 +92-94,92-95 +82-92,71-94 +6-10,1-5 +3-92,1-92 +72-76,71-74 +6-69,7-69 +25-75,26-66 +15-51,15-63 +14-99,14-98 +7-89,6-70 +58-66,62-85 +7-11,15-23 +42-62,42-63 +1-4,4-91 +1-3,3-97 +49-79,48-80 +15-95,16-77 +6-99,5-99 +6-79,8-27 +47-69,46-68 +20-21,24-96 +13-71,60-92 +69-94,36-69 +66-86,33-67 +34-47,34-47 +4-4,4-93 +22-68,68-68 +42-90,43-90 +74-74,74-94 +3-72,3-62 +63-75,64-67 +16-48,7-48 +2-89,3-99 +2-98,3-97 +41-94,42-95 +45-93,44-98 +16-18,17-64 +69-70,47-69 +2-93,93-94 +65-94,66-95 +54-56,55-57 +5-92,2-92 +48-92,28-45 +67-68,48-67 +7-12,6-8 +7-8,6-8 +94-99,16-95 +13-49,14-48 +25-48,48-48 +6-51,7-18 +46-83,15-97 +34-57,34-58 +16-89,9-17 +41-74,41-42 +13-32,13-97 +90-99,99-99 +7-99,7-98 +78-79,63-78 +4-98,64-79 +49-75,50-80 +40-75,40-52 +14-72,6-14 +5-91,91-91 +27-55,27-27 +20-22,27-37 +35-71,34-96 +2-52,1-1 +3-87,2-87 +2-70,36-69 +38-90,39-89 +67-79,67-80 +5-77,77-78 +26-32,2-34 +10-43,43-85 +55-84,84-85 +24-59,24-58 +43-49,44-48 +60-81,59-80 +52-91,91-92 +44-62,42-63 +3-96,3-97 +29-45,30-45 +64-92,6-93 +89-96,4-90 +71-91,71-90 +50-64,60-63 +49-88,49-89 +18-98,18-90 +30-74,72-77 +32-88,4-76 +22-58,22-23 +5-71,5-18 +8-90,7-98 +4-78,4-79 +54-87,54-55 +3-91,3-92 +14-92,89-91 +41-95,42-42 +74-75,53-77 +12-90,3-12 +5-50,3-51 +27-67,66-68 +10-42,24-38 +20-79,20-81 +10-78,78-97 +26-47,35-46 +34-82,34-63 +2-94,3-98 +19-87,19-87 +4-42,6-90 +13-49,12-14 +75-75,3-76 +55-70,54-56 +86-92,85-93 +31-38,28-46 +7-90,6-91 +33-72,32-50 +22-46,45-99 +45-53,46-51 +90-91,6-90 +13-87,14-45 +41-95,14-42 +90-95,76-95 +51-70,15-89 +15-49,25-95 +15-15,15-98 +20-88,14-33 +2-67,67-70 +88-93,78-96 +77-91,53-84 +53-88,52-98 +24-96,25-25 +40-40,26-40 +3-15,9-25 +35-99,36-97 +61-61,4-62 +5-95,6-6 +52-56,52-95 +22-30,23-23 +40-44,43-63 +13-16,5-14 +18-90,89-89 +5-88,4-88 +78-83,82-82 +6-80,1-1 +15-31,14-32 +13-96,13-13 +68-76,68-69 +56-67,67-90 +24-92,92-93 +16-29,17-90 +2-99,1-90 +12-75,1-13 +21-91,20-90 +1-99,11-97 +94-94,25-95 +2-91,3-92 +95-95,2-95 +2-99,1-97 +28-98,27-29 +6-26,2-67 +20-58,19-71 +32-87,49-86 +13-57,14-56 +2-55,11-44 +13-61,12-61 +33-81,80-80 +39-91,41-44 +40-93,39-47 +83-95,40-93 +20-79,24-78 +52-93,6-94 +96-96,3-97 +44-55,36-87 +43-44,13-43 +19-99,19-98 +6-17,17-97 +91-99,88-91 +31-51,52-77 +1-97,1-2 +26-86,26-87 +50-53,40-81 +40-89,89-93 +78-83,1-79 +9-89,8-73 +6-38,7-21 +19-20,18-21 +97-97,35-97 +28-57,20-28 +3-86,86-87 +53-53,2-52 +59-99,60-99 +75-84,76-95 +20-93,21-94 +29-29,29-30 +34-92,15-58 +11-58,11-59 +11-11,10-98 +19-77,77-77 +38-56,38-71 +83-86,12-88 +8-73,5-6 +5-7,7-93 +18-79,19-72 +4-99,2-2 +5-82,5-81 +24-37,37-95 +11-63,9-12 +6-99,7-98 +92-92,91-91 +58-91,2-95 +23-98,24-59 +2-90,3-89 +54-71,1-81 +22-98,48-97 +14-49,13-76 +5-52,6-89 +6-88,76-86 +3-85,6-97 +87-94,86-88 +30-46,31-45 +63-95,9-97 +19-94,94-98 +71-75,72-74 +48-89,49-89 +27-52,52-54 +21-99,41-94 +5-96,3-5 +40-69,38-40 +74-99,73-98 +6-31,22-85 +13-76,12-75 +29-74,29-74 +10-86,11-86 +40-41,33-40 +63-94,29-94 +55-85,55-55 +14-20,18-19 +52-78,1-79 +92-96,7-92 +12-89,14-57 +32-49,49-82 +36-63,43-62 +20-94,41-93 +79-95,7-97 +5-60,5-22 +29-93,28-93 +18-68,18-67 +12-37,13-36 +12-64,12-46 +1-99,2-2 +61-92,61-82 +14-16,15-68 +68-83,67-77 +24-93,93-93 +33-99,32-33 +93-93,11-94 +27-37,26-37 +7-31,6-31 +1-45,2-67 +5-99,5-99 +20-21,18-22 +22-89,23-88 +53-58,53-56 +48-91,48-86 +11-11,10-12 +33-50,50-81 +11-47,7-20 +51-71,71-72 +15-89,15-88 +6-90,2-15 +7-88,18-91 +4-98,4-98 +9-19,3-19 +29-58,57-83 +16-34,15-33 +13-50,12-89 +17-60,17-17 +90-94,91-98 +52-77,52-76 +97-99,5-97 +42-86,53-76 +4-7,19-56 +23-63,2-41 +15-43,43-44 +19-23,22-97 +47-48,45-49 +31-73,32-73 +57-72,21-38 +54-97,53-96 +2-29,3-64 +53-79,13-77 +63-77,4-63 +94-94,4-95 +5-44,4-98 +5-99,4-98 +31-96,32-96 +44-89,43-90 +1-63,2-63 +31-60,8-32 +48-88,55-62 +36-85,35-85 +7-98,97-97 +3-52,4-99 +19-57,1-20 +65-96,66-97 +61-95,43-62 +4-94,93-93 +14-97,58-96 +26-46,6-47 +79-96,81-95 +30-88,30-87 +27-97,26-96 +24-88,24-25 +27-95,28-51 +22-24,23-76 +40-44,44-52 +4-37,3-38 +6-7,4-8 +22-24,16-25 +59-73,58-73 +2-14,3-40 +20-65,65-65 +58-87,58-86 +99-99,26-98 +10-17,16-91 +52-71,59-70 +3-87,2-87 +22-95,95-96 +55-55,10-54 +52-84,82-96 +5-82,81-81 +9-95,7-7 +53-88,88-90 +5-6,5-63 +11-68,10-85 +8-12,10-11 +40-92,43-49 +19-35,20-34 +44-46,45-85 +10-25,12-26 +63-85,54-80 +10-97,91-94 +41-50,40-42 +7-72,8-71 +1-15,12-92 +22-93,54-99 +82-94,30-83 +7-89,6-89 +6-69,5-7 +8-25,24-24 +8-47,8-47 +21-25,24-92 +81-81,81-86 +6-15,44-68 +82-82,34-82 +29-86,2-87 +37-54,20-57 +56-97,1-96 +65-65,6-65 +4-81,5-82 +78-85,37-78 +18-99,19-97 +31-97,34-96 +41-58,40-77 +11-96,10-97 +18-35,7-24 +5-75,3-74 +2-53,15-47 +9-17,9-85 +20-26,21-26 +23-70,67-68 +23-72,23-73 +36-81,9-93 +25-76,25-26 +77-77,46-77 +78-98,78-87 +91-91,14-92 +22-92,21-93 +3-3,3-87 +99-99,61-99 +18-28,19-29 +44-45,19-44 +17-60,11-17 +35-97,36-36 +58-58,11-58 +24-62,23-63 +18-56,55-81 +7-31,8-30 +60-61,1-65 +8-99,7-31 +2-4,5-6 +4-93,48-92 +2-87,1-98 +3-75,3-4 +1-53,53-54 +57-73,57-68 +11-60,2-61 +51-70,43-52 +4-33,3-34 +29-68,67-68 +75-86,28-71 +4-84,3-83 +12-96,51-96 +30-98,71-94 +54-62,60-62 +13-66,14-86 +14-42,12-43 +47-69,48-69 +58-89,86-96 +27-96,27-95 +6-66,6-16 +2-30,1-37 +27-91,27-38 +46-52,45-49 +9-64,8-75 +53-92,54-93 +35-91,35-72 +66-91,91-97 +46-81,49-81 +3-90,1-3 +53-54,52-56 +4-92,3-5 +42-84,42-77 +1-3,2-95 +8-73,9-90 +17-69,16-70 +9-20,2-10 +97-99,96-97 +1-86,2-91 +17-66,9-95 +9-10,9-97 +19-40,39-54 +5-94,5-91 +33-33,18-34 +2-3,2-3 +22-66,21-84 +37-90,37-81 +6-93,6-93 +64-81,65-78 +57-59,57-67 +69-94,68-68 +39-97,38-98 +74-79,71-79 +2-80,41-80 +5-91,28-89 +1-97,2-97 +24-61,25-94 +76-81,76-97 +48-56,48-49 +25-81,7-12 +42-99,41-41 +45-60,46-59 +19-85,57-84 +8-8,7-98 +14-53,13-54 +17-82,69-84 +73-86,24-90 +78-80,6-78 +2-76,3-26 +1-33,33-89 +12-48,48-75 +25-87,21-88 +22-68,22-71 +2-91,1-91 +59-79,7-60 +6-70,4-4 +47-94,27-94 +23-50,10-49 +2-85,2-83 +2-96,7-96 +21-93,22-92 +27-67,28-67 +32-38,32-33 +15-94,93-94 +36-74,36-37 +33-84,43-83 +5-98,2-2 +1-93,2-92 +37-97,42-70 +81-82,21-81 +14-94,13-15 +5-45,4-87 +44-96,45-95 +2-7,6-14 +14-73,25-77 +83-83,84-99 +13-62,21-73 +91-98,22-91 +19-96,86-93 +5-78,6-77 +3-97,4-98 +8-54,17-83 +9-94,10-10 +36-96,35-37 +8-93,7-98 +48-60,48-61 +17-97,9-18 +73-87,74-88 +19-63,19-63 +21-73,20-74 +1-89,26-89 +44-50,48-55 +43-70,70-71 +5-14,6-63 +23-82,22-94 +20-67,18-94 +36-52,47-51 +10-84,9-83 +18-96,18-71 +3-64,4-65 +4-7,6-89 +62-89,73-99 +4-92,3-5 +3-62,45-59 +9-98,10-97 +12-80,12-89 +14-15,18-85 +7-18,6-23 +14-70,15-24 +24-52,21-78 +63-92,32-93 +47-91,42-48 +16-91,91-95 +31-66,30-65 +52-91,5-91 +85-85,11-86 +22-69,68-68 +11-58,10-21 +47-76,42-47 +63-64,43-66 +17-29,4-66 +19-19,18-86 +33-70,33-70 +33-38,32-38 +3-5,4-99 +14-55,13-55 +4-48,4-4 +80-96,79-98 +99-99,5-29 +48-72,49-72 +5-91,3-92 +10-25,10-26 +9-11,10-28 +29-39,28-38 +19-55,55-56 +1-14,1-2 +21-81,21-81 +32-89,38-86 +31-79,31-39 +66-72,67-73 +3-3,2-29 +9-67,10-10 +24-96,23-25 +90-94,90-93 +91-91,7-92 +45-98,44-93 +1-76,3-75 +14-59,22-60 +12-70,4-21 +30-93,25-98 +18-30,9-19 +1-4,3-90 +9-95,9-22 +92-96,59-92 +26-67,22-25 +7-9,8-30 +74-82,82-83 +92-92,4-93 +14-76,2-63 +52-86,51-82 +11-98,10-12 +2-97,96-96 +18-91,18-99 +15-36,17-92 +14-90,13-91 +14-88,87-99 +47-92,48-92 +3-97,10-93 +9-87,80-98 +4-96,3-5 +89-99,3-89 +11-65,10-66 +4-52,52-93 +29-31,12-28 diff --git a/2022/day04/main b/2022/day04/main Binary files differnew file mode 100755 index 0000000..498303f --- /dev/null +++ b/2022/day04/main diff --git a/2022/day04/main.c b/2022/day04/main.c new file mode 100644 index 0000000..8233265 --- /dev/null +++ b/2022/day04/main.c @@ -0,0 +1,15 @@ +#include <stdio.h> + +int main() +{ + int a1,a2,b1,b2; + int overlaps = 0; + while (scanf("%d-%d,%d-%d", &a1, &a2, &b1, &b2) != EOF) + { + // printf("%d-%d,%d-%d", a1, a2, b1, b2); + if ( ((a1 >= b1) && (a2 <= b2)) || ((b1 >= a1) && (b2 <= a2))) { + overlaps++; + } + } + printf("%d\n", overlaps); +} diff --git a/2022/day04/main2.c b/2022/day04/main2.c new file mode 100644 index 0000000..d26bdb6 --- /dev/null +++ b/2022/day04/main2.c @@ -0,0 +1,18 @@ +#include <stdio.h> + +int main() +{ + int a1,a2,b1,b2; + int overlaps = 0; + while (scanf("%d-%d,%d-%d", &a1, &a2, &b1, &b2) != EOF) + { + // printf("%d-%d,%d-%d", a1, a2, b1, b2); + if ( + ((a1 >= b1) && (a2 <= b2)) || ((b1 >= a1) && (b2 <= a2)) || + ((a1 <= b1) && (a2 >= b1) || (a1 <= b2) && (a2 >= b2) ) + ) { + overlaps++; + } + } + printf("%d\n", overlaps); +} diff --git a/2022/day05/input1.txt b/2022/day05/input1.txt new file mode 100644 index 0000000..84933bb --- /dev/null +++ b/2022/day05/input1.txt @@ -0,0 +1,9 @@ + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2 diff --git a/2022/day05/input2.txt b/2022/day05/input2.txt new file mode 100644 index 0000000..c1f5fb0 --- /dev/null +++ b/2022/day05/input2.txt @@ -0,0 +1,512 @@ +[T] [D] [L] +[R] [S] [G] [P] [H] +[G] [H] [W] [R] [L] [P] +[W] [G] [F] [H] [S] [M] [L] +[Q] [V] [B] [J] [H] [N] [R] [N] +[M] [R] [R] [P] [M] [T] [H] [Q] [C] +[F] [F] [Z] [H] [S] [Z] [T] [D] [S] +[P] [H] [P] [Q] [P] [M] [P] [F] [D] + 1 2 3 4 5 6 7 8 9 + +move 3 from 8 to 9 +move 2 from 2 to 8 +move 5 from 4 to 2 +move 7 from 1 to 4 +move 3 from 8 to 2 +move 3 from 2 to 7 +move 1 from 7 to 4 +move 3 from 2 to 9 +move 4 from 7 to 9 +move 1 from 5 to 2 +move 2 from 3 to 4 +move 5 from 9 to 5 +move 6 from 9 to 3 +move 5 from 9 to 5 +move 1 from 9 to 7 +move 2 from 3 to 1 +move 7 from 3 to 9 +move 2 from 7 to 2 +move 5 from 2 to 4 +move 1 from 2 to 9 +move 2 from 1 to 9 +move 7 from 6 to 1 +move 2 from 7 to 3 +move 2 from 3 to 9 +move 1 from 7 to 4 +move 1 from 9 to 2 +move 3 from 1 to 8 +move 2 from 3 to 4 +move 5 from 9 to 2 +move 1 from 3 to 9 +move 8 from 5 to 7 +move 1 from 6 to 1 +move 15 from 4 to 1 +move 4 from 2 to 5 +move 5 from 9 to 7 +move 1 from 9 to 5 +move 5 from 1 to 2 +move 3 from 8 to 9 +move 1 from 7 to 6 +move 11 from 1 to 2 +move 7 from 5 to 3 +move 4 from 2 to 6 +move 7 from 3 to 4 +move 3 from 5 to 9 +move 2 from 2 to 5 +move 5 from 1 to 8 +move 2 from 6 to 8 +move 3 from 8 to 9 +move 9 from 4 to 9 +move 9 from 7 to 4 +move 2 from 8 to 1 +move 1 from 8 to 7 +move 6 from 2 to 7 +move 5 from 2 to 4 +move 5 from 7 to 2 +move 2 from 1 to 7 +move 2 from 6 to 4 +move 7 from 7 to 1 +move 3 from 2 to 6 +move 1 from 8 to 7 +move 2 from 9 to 3 +move 2 from 3 to 1 +move 1 from 2 to 5 +move 4 from 6 to 5 +move 2 from 2 to 3 +move 3 from 5 to 7 +move 1 from 5 to 3 +move 9 from 1 to 7 +move 2 from 9 to 5 +move 13 from 4 to 1 +move 5 from 7 to 2 +move 3 from 3 to 1 +move 2 from 2 to 9 +move 1 from 2 to 7 +move 5 from 5 to 6 +move 2 from 2 to 4 +move 5 from 1 to 3 +move 9 from 7 to 8 +move 2 from 9 to 5 +move 3 from 5 to 4 +move 5 from 9 to 2 +move 10 from 4 to 8 +move 1 from 4 to 1 +move 2 from 8 to 4 +move 4 from 8 to 2 +move 3 from 6 to 8 +move 7 from 8 to 7 +move 10 from 9 to 3 +move 7 from 3 to 2 +move 11 from 2 to 3 +move 13 from 3 to 9 +move 1 from 6 to 3 +move 1 from 1 to 2 +move 1 from 2 to 8 +move 3 from 3 to 4 +move 1 from 2 to 9 +move 1 from 4 to 1 +move 10 from 8 to 3 +move 11 from 9 to 7 +move 1 from 6 to 2 +move 14 from 7 to 1 +move 2 from 2 to 9 +move 4 from 7 to 6 +move 1 from 2 to 4 +move 3 from 4 to 2 +move 4 from 2 to 9 +move 10 from 3 to 4 +move 3 from 6 to 1 +move 5 from 9 to 5 +move 5 from 5 to 8 +move 1 from 9 to 7 +move 2 from 9 to 6 +move 1 from 9 to 8 +move 2 from 4 to 8 +move 1 from 4 to 5 +move 2 from 3 to 1 +move 2 from 3 to 7 +move 27 from 1 to 2 +move 2 from 7 to 1 +move 9 from 4 to 6 +move 9 from 6 to 5 +move 5 from 8 to 6 +move 26 from 2 to 3 +move 1 from 2 to 5 +move 1 from 2 to 7 +move 1 from 8 to 4 +move 1 from 7 to 8 +move 24 from 3 to 5 +move 1 from 8 to 5 +move 1 from 4 to 3 +move 1 from 7 to 1 +move 1 from 8 to 9 +move 7 from 1 to 7 +move 8 from 6 to 4 +move 4 from 7 to 6 +move 1 from 3 to 9 +move 2 from 9 to 1 +move 3 from 7 to 9 +move 8 from 4 to 6 +move 3 from 9 to 1 +move 1 from 3 to 6 +move 1 from 8 to 2 +move 10 from 5 to 4 +move 1 from 3 to 8 +move 13 from 5 to 3 +move 1 from 2 to 9 +move 1 from 8 to 9 +move 1 from 3 to 8 +move 1 from 9 to 2 +move 3 from 6 to 9 +move 7 from 4 to 9 +move 4 from 3 to 9 +move 2 from 6 to 8 +move 2 from 4 to 5 +move 10 from 9 to 3 +move 1 from 1 to 9 +move 1 from 4 to 8 +move 1 from 1 to 4 +move 1 from 4 to 5 +move 4 from 6 to 3 +move 1 from 9 to 5 +move 1 from 6 to 9 +move 2 from 6 to 5 +move 1 from 9 to 2 +move 1 from 6 to 7 +move 18 from 5 to 2 +move 22 from 3 to 7 +move 19 from 7 to 1 +move 3 from 8 to 5 +move 4 from 9 to 3 +move 2 from 7 to 2 +move 1 from 8 to 1 +move 19 from 1 to 3 +move 2 from 7 to 5 +move 13 from 3 to 9 +move 4 from 1 to 2 +move 3 from 5 to 1 +move 11 from 9 to 1 +move 11 from 2 to 8 +move 3 from 9 to 3 +move 3 from 5 to 2 +move 2 from 1 to 4 +move 5 from 2 to 7 +move 12 from 1 to 5 +move 2 from 4 to 5 +move 9 from 5 to 8 +move 1 from 5 to 3 +move 4 from 2 to 3 +move 2 from 7 to 5 +move 6 from 2 to 8 +move 17 from 8 to 9 +move 2 from 9 to 6 +move 2 from 7 to 1 +move 15 from 9 to 6 +move 2 from 2 to 4 +move 9 from 8 to 5 +move 2 from 1 to 3 +move 12 from 6 to 2 +move 2 from 3 to 9 +move 5 from 6 to 3 +move 4 from 5 to 3 +move 11 from 3 to 4 +move 2 from 9 to 4 +move 6 from 5 to 2 +move 13 from 4 to 3 +move 1 from 4 to 5 +move 1 from 4 to 8 +move 18 from 2 to 6 +move 2 from 5 to 3 +move 1 from 8 to 3 +move 1 from 2 to 5 +move 1 from 7 to 8 +move 28 from 3 to 6 +move 2 from 3 to 4 +move 3 from 5 to 9 +move 2 from 5 to 9 +move 3 from 9 to 3 +move 5 from 3 to 4 +move 1 from 9 to 3 +move 1 from 9 to 1 +move 1 from 3 to 4 +move 45 from 6 to 2 +move 1 from 8 to 3 +move 2 from 4 to 6 +move 5 from 4 to 2 +move 1 from 3 to 7 +move 3 from 2 to 9 +move 1 from 4 to 8 +move 3 from 6 to 1 +move 42 from 2 to 8 +move 2 from 9 to 2 +move 4 from 2 to 6 +move 2 from 2 to 7 +move 1 from 9 to 6 +move 2 from 8 to 9 +move 4 from 1 to 8 +move 1 from 6 to 4 +move 1 from 4 to 8 +move 1 from 2 to 5 +move 3 from 7 to 4 +move 39 from 8 to 3 +move 7 from 8 to 5 +move 8 from 5 to 7 +move 35 from 3 to 1 +move 4 from 3 to 7 +move 10 from 7 to 2 +move 2 from 9 to 6 +move 3 from 4 to 2 +move 1 from 7 to 5 +move 1 from 7 to 8 +move 1 from 5 to 4 +move 12 from 1 to 6 +move 1 from 8 to 1 +move 1 from 4 to 5 +move 14 from 6 to 8 +move 9 from 8 to 6 +move 5 from 6 to 1 +move 11 from 2 to 9 +move 1 from 9 to 8 +move 6 from 8 to 3 +move 6 from 9 to 2 +move 8 from 1 to 9 +move 3 from 3 to 6 +move 7 from 1 to 4 +move 1 from 5 to 9 +move 8 from 9 to 8 +move 7 from 6 to 8 +move 1 from 9 to 3 +move 3 from 6 to 4 +move 3 from 9 to 1 +move 4 from 3 to 2 +move 1 from 6 to 7 +move 1 from 4 to 2 +move 13 from 1 to 7 +move 6 from 4 to 8 +move 1 from 7 to 3 +move 1 from 4 to 6 +move 1 from 9 to 5 +move 1 from 3 to 5 +move 19 from 8 to 9 +move 1 from 6 to 5 +move 6 from 9 to 2 +move 2 from 5 to 8 +move 1 from 5 to 2 +move 4 from 1 to 4 +move 8 from 9 to 4 +move 3 from 9 to 8 +move 2 from 9 to 1 +move 6 from 7 to 5 +move 12 from 4 to 2 +move 6 from 8 to 3 +move 1 from 4 to 1 +move 1 from 3 to 1 +move 13 from 2 to 3 +move 4 from 5 to 3 +move 1 from 4 to 9 +move 1 from 8 to 9 +move 12 from 3 to 2 +move 1 from 9 to 1 +move 2 from 5 to 9 +move 3 from 9 to 5 +move 1 from 7 to 5 +move 3 from 7 to 3 +move 1 from 5 to 4 +move 1 from 5 to 8 +move 9 from 2 to 3 +move 2 from 2 to 3 +move 3 from 1 to 9 +move 1 from 8 to 9 +move 3 from 9 to 1 +move 9 from 2 to 6 +move 1 from 9 to 5 +move 6 from 2 to 3 +move 2 from 6 to 9 +move 3 from 6 to 3 +move 1 from 4 to 3 +move 2 from 9 to 6 +move 2 from 7 to 2 +move 2 from 2 to 8 +move 24 from 3 to 7 +move 2 from 5 to 6 +move 2 from 8 to 2 +move 7 from 2 to 8 +move 8 from 3 to 6 +move 2 from 1 to 3 +move 1 from 1 to 2 +move 1 from 5 to 2 +move 15 from 7 to 4 +move 9 from 7 to 9 +move 7 from 9 to 1 +move 5 from 8 to 1 +move 4 from 1 to 4 +move 19 from 4 to 3 +move 22 from 3 to 5 +move 1 from 7 to 5 +move 9 from 5 to 4 +move 6 from 1 to 3 +move 6 from 3 to 1 +move 4 from 5 to 4 +move 1 from 2 to 1 +move 1 from 2 to 6 +move 4 from 6 to 1 +move 1 from 3 to 6 +move 3 from 6 to 3 +move 2 from 9 to 8 +move 2 from 5 to 3 +move 2 from 5 to 1 +move 10 from 6 to 4 +move 4 from 4 to 9 +move 7 from 4 to 3 +move 2 from 8 to 7 +move 4 from 9 to 3 +move 5 from 5 to 7 +move 1 from 5 to 1 +move 1 from 6 to 3 +move 1 from 8 to 4 +move 1 from 8 to 3 +move 13 from 4 to 5 +move 1 from 1 to 8 +move 6 from 5 to 3 +move 1 from 7 to 6 +move 5 from 7 to 6 +move 9 from 1 to 8 +move 1 from 8 to 4 +move 1 from 7 to 1 +move 1 from 4 to 1 +move 5 from 3 to 7 +move 3 from 7 to 9 +move 1 from 5 to 4 +move 6 from 8 to 6 +move 1 from 9 to 3 +move 2 from 9 to 5 +move 7 from 5 to 9 +move 1 from 7 to 5 +move 2 from 5 to 3 +move 10 from 6 to 8 +move 2 from 6 to 1 +move 1 from 4 to 9 +move 1 from 7 to 5 +move 8 from 8 to 2 +move 1 from 1 to 7 +move 1 from 9 to 7 +move 1 from 5 to 1 +move 3 from 9 to 8 +move 7 from 8 to 7 +move 6 from 7 to 1 +move 1 from 8 to 7 +move 4 from 7 to 1 +move 16 from 3 to 7 +move 4 from 3 to 1 +move 5 from 7 to 8 +move 16 from 1 to 4 +move 9 from 1 to 7 +move 1 from 3 to 4 +move 15 from 4 to 8 +move 1 from 3 to 1 +move 2 from 1 to 6 +move 2 from 4 to 9 +move 17 from 8 to 2 +move 6 from 9 to 5 +move 8 from 7 to 8 +move 2 from 6 to 9 +move 4 from 5 to 7 +move 2 from 8 to 5 +move 1 from 5 to 9 +move 11 from 2 to 6 +move 4 from 6 to 1 +move 5 from 2 to 8 +move 2 from 9 to 2 +move 1 from 9 to 3 +move 3 from 1 to 8 +move 1 from 3 to 6 +move 7 from 6 to 9 +move 2 from 5 to 4 +move 6 from 7 to 4 +move 4 from 8 to 1 +move 1 from 5 to 2 +move 1 from 6 to 1 +move 7 from 9 to 8 +move 2 from 7 to 9 +move 9 from 2 to 9 +move 5 from 9 to 3 +move 3 from 2 to 8 +move 4 from 8 to 7 +move 9 from 7 to 2 +move 3 from 1 to 3 +move 14 from 8 to 1 +move 2 from 8 to 3 +move 1 from 9 to 4 +move 3 from 7 to 9 +move 8 from 3 to 9 +move 2 from 2 to 7 +move 12 from 1 to 8 +move 4 from 1 to 6 +move 2 from 6 to 7 +move 1 from 6 to 7 +move 9 from 4 to 7 +move 9 from 7 to 4 +move 1 from 1 to 6 +move 2 from 3 to 6 +move 2 from 6 to 8 +move 12 from 9 to 8 +move 2 from 6 to 9 +move 2 from 9 to 7 +move 1 from 8 to 5 +move 5 from 7 to 5 +move 1 from 9 to 1 +move 3 from 4 to 1 +move 5 from 4 to 8 +move 4 from 1 to 7 +move 1 from 4 to 2 +move 19 from 8 to 4 +move 2 from 7 to 5 +move 14 from 8 to 5 +move 2 from 7 to 8 +move 3 from 9 to 8 +move 19 from 4 to 2 +move 9 from 2 to 4 +move 2 from 7 to 8 +move 15 from 5 to 9 +move 15 from 9 to 8 +move 1 from 5 to 9 +move 11 from 8 to 7 +move 4 from 5 to 8 +move 1 from 5 to 9 +move 2 from 9 to 5 +move 2 from 2 to 6 +move 14 from 2 to 9 +move 12 from 8 to 9 +move 3 from 8 to 4 +move 7 from 9 to 2 +move 4 from 7 to 9 +move 1 from 6 to 9 +move 1 from 7 to 5 +move 1 from 6 to 2 +move 3 from 5 to 4 +move 19 from 9 to 4 +move 1 from 5 to 1 +move 1 from 9 to 8 +move 1 from 1 to 7 +move 1 from 8 to 9 +move 4 from 7 to 2 +move 3 from 7 to 6 +move 18 from 4 to 2 +move 17 from 2 to 3 +move 2 from 6 to 8 +move 17 from 3 to 6 +move 13 from 2 to 1 +move 2 from 8 to 3 +move 2 from 2 to 9 +move 6 from 1 to 9 +move 1 from 3 to 4 +move 1 from 3 to 9 +move 8 from 6 to 4 +move 20 from 4 to 8 +move 3 from 4 to 8 +move 15 from 8 to 2 +move 11 from 2 to 6 +move 2 from 1 to 7 +move 7 from 9 to 8 +move 6 from 9 to 3 +move 1 from 6 to 5 diff --git a/2022/day05/main b/2022/day05/main Binary files differnew file mode 100755 index 0000000..1d67170 --- /dev/null +++ b/2022/day05/main diff --git a/2022/day05/main.c b/2022/day05/main.c new file mode 100644 index 0000000..f6af2ea --- /dev/null +++ b/2022/day05/main.c @@ -0,0 +1,122 @@ + +#include <stdio.h> +#include <stdlib.h> + +struct StackItem_; + +typedef struct StackItem_ { + char value; + struct StackItem_ *next, *prev; +} StackItem; + +typedef struct Stack_ { + StackItem *top, *bottom; +} Stack; + +void push_top(Stack *stack, StackItem *item) { + if (stack->top) + { + StackItem* old = stack->top; + old->next = item; + item->prev = old; + } + if (!stack->top) stack->bottom = item; + stack->top = item; +} + +void push_back(Stack *stack, StackItem *item) { + if (stack->bottom) + { + StackItem* old = stack->bottom; + old->prev = item; + item->next = old; + } + if (!stack->bottom) stack->top = item; + stack->bottom = item; +} + +StackItem* pop_top(Stack *stack) { + StackItem* old = stack->top; + stack->top = old->prev; + if (old->prev != 0) + { + stack->top->next = 0; + } + old->next = old->prev = 0; + + return old; +} + +StackItem* pop_back(Stack *stack) { + StackItem* old = stack->bottom; + stack->bottom = old->next; + stack->bottom->prev = 0; + old->next = old->prev = 0; + + return old; +} + +void printCargo(Stack *cargo, size_t len) +{ + for (int i = 0; i < len; i++) + { + for ( StackItem *e = cargo[i].bottom; e != 0; e = e->next ) + { + printf("%c", e->value); + } + printf("\n"); + } +} + +int main() +{ + char *line = 0; + size_t len; + Stack *cargo; + size_t cargos; + ssize_t nread; + + int amount, from, to; + + while ((nread = getline(&line, &len, stdin)) != 0) + { + if ( line[1] == '1' ) continue; + if ( line[0] == '\n' ) break; + if ( !cargo ) { + cargos = (nread+1)/4; + cargo = (Stack*)malloc( sizeof(Stack) * cargos ); + } + + for (int i = 0; i < cargos; i++ ) { + char load = line[i*4+1]; + if ( load != ' ' ) { + StackItem *box = malloc(sizeof(StackItem)); + box->value = line[i*4+1]; + box->next = box->prev = 0; + push_back(&cargo[i], box); + } + } + } + + printCargo(cargo, cargos); + printf("---------------\n"); + + while (scanf("move %d from %d to %d\n", &amount, &from, &to) != EOF) + { + printf( "%d %d %d\n", amount, from, to ); + for (int i = 0; i < amount; i++) + { + StackItem *item = pop_top(&cargo[from-1]); + push_top(&cargo[to-1], item); + + printCargo(cargo, cargos); + printf("---------------\n"); + } + } + + for ( int i = 0; i < cargos; i++ ) + { + printf( "%c", cargo[i].top->value ); + } + printf("\n"); +} diff --git a/2022/day05/main2.c b/2022/day05/main2.c new file mode 100644 index 0000000..f7fe805 --- /dev/null +++ b/2022/day05/main2.c @@ -0,0 +1,129 @@ + +#include <stdio.h> +#include <stdlib.h> + +struct StackItem_; + +typedef struct StackItem_ { + char value; + struct StackItem_ *next, *prev; +} StackItem; + +typedef struct Stack_ { + StackItem *top, *bottom; +} Stack; + +void push_top(Stack *stack, StackItem *item) { + if (stack->top) + { + StackItem* old = stack->top; + old->next = item; + item->prev = old; + } + if (!stack->top) stack->bottom = item; + stack->top = item; +} + +void push_back(Stack *stack, StackItem *item) { + if (stack->bottom) + { + StackItem* old = stack->bottom; + old->prev = item; + item->next = old; + } + if (!stack->bottom) stack->top = item; + stack->bottom = item; +} + +StackItem* pop_top(Stack *stack) { + StackItem* old = stack->top; + stack->top = old->prev; + if (old->prev != 0) + { + stack->top->next = 0; + } + old->next = old->prev = 0; + + return old; +} + +StackItem* pop_back(Stack *stack) { + StackItem* old = stack->bottom; + stack->bottom = old->next; + stack->bottom->prev = 0; + old->next = old->prev = 0; + + return old; +} + +void printCargo(Stack *cargo, size_t len) +{ + for (int i = 0; i < len; i++) + { + for ( StackItem *e = cargo[i].bottom; e != 0; e = e->next ) + { + printf("%c", e->value); + } + printf("\n"); + } +} + +int main() +{ + char *line = 0; + size_t len; + Stack *cargo; + size_t cargos; + ssize_t nread; + + int amount, from, to; + + Stack *temp = malloc(sizeof(Stack)); + + while ((nread = getline(&line, &len, stdin)) != 0) + { + if ( line[1] == '1' ) continue; + if ( line[0] == '\n' ) break; + if ( !cargo ) { + cargos = (nread+1)/4; + cargo = (Stack*)malloc( sizeof(Stack) * cargos ); + } + + for (int i = 0; i < cargos; i++ ) { + char load = line[i*4+1]; + if ( load != ' ' ) { + StackItem *box = malloc(sizeof(StackItem)); + box->value = line[i*4+1]; + box->next = box->prev = 0; + push_back(&cargo[i], box); + } + } + } + + printCargo(cargo, cargos); + printf("---------------\n"); + + while (scanf("move %d from %d to %d\n", &amount, &from, &to) != EOF) + { + printf( "%d %d %d\n", amount, from, to ); + for (int i = 0; i < amount; i++) + { + StackItem *item = pop_top(&cargo[from-1]); + push_top(temp, item); + } + for (int i = 0; i < amount; i++) + { + StackItem *item = pop_top(temp); + push_top(&cargo[to-1], item); + + printCargo(cargo, cargos); + printf("---------------\n"); + } + } + + for ( int i = 0; i < cargos; i++ ) + { + printf( "%c", cargo[i].top->value ); + } + printf("\n"); +} diff --git a/2022/day06/input2.txt b/2022/day06/input2.txt new file mode 100644 index 0000000..19a271d --- /dev/null +++ b/2022/day06/input2.txt @@ -0,0 +1 @@ +mvwvrwvwbblffmvmhmllmzmqzzbhbnnvrnvnmvvqrqrccpsstvvshvvpvvpddzwwjddfzzgbbzcchrrtzzmfffzqqsjjbfbjfjwffhrhrgrfrsfrsffbwwphwhgwgmgnggzwzhwzzpggnccdbcbssgccqgcgcvgccwffrqfqtqmqppwphhlbblnnwhwfhwhmhzhmmzbmbbjjmcjcggwlgltldttpccjlccbjccvfcvvdbvdvndvvmbmcbmmhphpbhhgjgllmljlqlwlclzlccrvrdvdzvzzzbrbrnbblplrplpsstdtjddgjgjgwjwzwbzwwrhwwbzwbwpwssvgvnnwnvvjqqswwsccwctwtntdndffjzfzmfzmfzmfzzhjzhzssdsgsnggbbqdqlqbllmglgddqppjjtzttlflrrczcmzzsppvfpvffcfrccvvvhjvhvfhfbbwdwrwswqqftfbfcfdfnfpnfflbbcmcqqsqwqqccmwmvwvffvdvlvtvqttnllqslsnllzplldmmzczhzmzzhllpfpqpnnqwwwrzzdpzzhccfvcvclcnnrjrmjrjlrlflqqtpqqdgqghhwdwdttlztttwmmvfmftfptphhddswdsdpdvpvpcpjjnvjvqvhvqqqfgqqgwqgwghwwmmvmvfmvvnvsslcclzlslppztzfzbzllcgllcsllvgvqvtqtsstztwwgjgghnhnhdnnqgnntqqtccdmcmhmpphpmmmbpbptpnnnmnppwlpwwfpwfwmfwfssbspslsflljpppbsspwptpwttfbtfftltvlttdmttllmggfcgfccvwcvczvvgvsgswsrrwppgcpggpgnngfnndrrdjrdrfdfmmjmsmbmmwjjjfzfdfbdbbtgbbcsbccgbbrvvrqrwqwmmhrhhbcbdbvdvzdvdjvvnwntwwdfwwrhrmhhnghhncccfttmpmrrjhhqddrsrvvssmrrgvgdgmmfqqhttspswpwlplpjljcjmjmvmdvvhbvvtqvqccczwwtlllztlzzpnnqznzddqsqvsshrrmccnppgrrjcjpccrvcvnvcncllffvnnbsbhhrmhmzzzhrhchjccgjcjwwhddmfmhhmrrrbccqddmjdmjdjtdjjmttzstsctssvvgghgbbhmhzmmjqqqqjgjfjpffpmpzmzszfzgzcggpmpnnqjqffgpghhszzvlzzdgzggqmggqlllcwwtzwwcfwccpjpggtqgtttzffdpffjzfzddzppprnprpqqbppvjpjzppbzpbzppwzzcnndsdzszbssqwqggnhggnzggpcpnndssghsggmfmrffvddvwvssjmjrmrmnndwdwhdhwwfjfjwjmwwqssmdsmdmssqzzrgzzjttnqnfqfcccvvmsvsvffccdjdccgtgqqjwqqnbqqnhqhrqrmrgmrrzjzrznzllwrlrbbcppctptwtfttlntnltnlnzzhrzhrzrtzzvsvfvjffsbsnbbfpphtptjjmffqgqnggnqnsshffslflggtlggmpggnfgfbgbfbcbbtdbdjqwfggzsfmzflttgdfqchhtjfwlmdnsbvmqcrhsrtwtjlmnlwbvjvqdzswdthbjslqzgmtzfjfcrgbhrrjtzgljbqfrzzqszhddnmzpnbgnflghnflwdmjdhgpnvwvnltcngwggqdznrpdtwsrclwwlfzhnjtpqcgzjqjnhcwbhndwvgrczhzwfjrdvjztdbjshmhrrqctjwpcdnpnvrtggrmhzhdtlntjphcddplgfvvmjzcbbpjbqbjwmnwqgftbmchghwvrlptvnfbffvgtdbtnfzwdmdlgzjbrvffvbrfwgjzzpbpcdzhcjbhfwnmqqwvjvnpgdqdjsmwdmrgfqrwhhqqjpfmvlncfdjchrccwpbptccdchqwvbcqzlhbfgrdzgncbwrzqpfszrcwtmnvbztjlzjlrqqfrnplhnmdjljcpnqssthhmjqrrlwdvsjswdwtfstmbvwhbptjnphjmnllbwffppzmdpchbcwcmgqzfmdqvhcmrvtgtjwlzfpnjnjtfvdhtjlqsdjwrrnflnsqrtfsnbjfdllhqslltsjqzdfqthqjjgrtqjwmlqqlhvszqswmdcbnwqgshpvfjdtvsqjvcnrnvtpfsgqszhtmcdlsqjwmttcqsdlvssrgwhtmtqwmttptnmgzpwzzrbwtsrjhmjpblztgftppcwwrjppvwlvdhwwdlfcdvhwpvhqpwrqsczvlmtghrrvqbphljcmcrfmwltlmnzchzrlbgspdjwfbhrmnfhvjwlgtghcpbfgdvrmwbqbprfvwpzqzrgqbhjtztwhjcjtncmbgjphsgdfvjwjljlwzhsdldqtdvgtzpwtmrbnpvqrmfdwngzqtsdjjztslrwdnfwgbnsjblcjzvmgbqllmdvvvdcvplgbzmhcrpbbjbfzhjgfpmjtrpmgvshzvqhcbcjzfcsvqggjcllcnjlrwqfpzldswzjgzvqwvszhrntnvlcpdcfqhqrtmhbdjqpfblrsbrhdfdwfgbhsnnjpgjvfpssfmhdbdncfrqbzpbttrhfzqnrttltqbvmhglbdpwmdbmgwcdsdsflmcnphwvbbhgqpqmwbdsmqwhcdftdlcfnstlfnzzsjhqzlsdmhpvlcqvhhlpdtzlqzlvbbwhhdsqhntbtpjjvnjlrncfmvnqmzwpldgrbfcfgdtlmrfzcbqfhvhpmsrrlnqwfggwrjsmnpnqhvvcfsfspfrmhwmbpqfhprzsswrczttlczhcqvgqqsnbhhfszqbswgtcjgddhngtcvlwqqmqzntrcwgwjhmhlgclpgtmqnpgwwhnjfdvvjgmqjlzsmwztpsdzrjlshswzljlmdzfqmqbtgtzlsfwqvwrdchjvrdnwdbprfvdvczstvnzfzzfmzbwjhtflbmhlgmfzrdfrqwfbltwqlqrghlprppvlqwggvczdcnmrmblhcfmpzdmqppgwhbbrjlzsvmsfzlrdljftcrdfdgmvrccwszpjmvdnbmfdnsgmgzsdpbrlsqvsmcwwqlwtwbgfvwtsmpqlnhjchnzrpncgtcqgwqrmqmrwsbmdvqcpggpzcjgtrhvnbpprlwfnjlvrgrdjjvncjmmflrpczqnlbqczggssqfcjcrghqlsztpdjpbbfcdjzzdjbljlsczdmrgshdscvhnltrwchjcmjzmjbhldnqzwwpswsnsldcbdcdpdgpjgwrnfbcpjtvzlhvgggldcfqcwwppvltsvsmwzwdgmhnfggtgtwldmrglcvmstgmbgbjhwwhgdhfrbjlwfhjfppdmffblbbzrplhlhqlsrnsthvjtglqntzcncmvhqnlsvvrscrhlncgncjswfgcvgjlwsndzmsbhbdqsggdgrsfqtzwnjpsdlbsqjrrjwwlbptwqpfqwvpsrtrmstddzdbjjlwvfqcpfczpsnmcgbfpbwcpljdhrgsqftbnplccjphwsdbprqfqqfcvtcdznnhrbdqpccphvdgtspmzzdbnslnrvtfrtbhcfzfgmhrttmdpwftvccjbllhqgtmpgwvbdjgtvtfbfnnsfgzqjmrpbcmqhpfbstznbvgtbhnwbbnjfsthdgdrpfdtvrtmgbwzqqpnlltbshjvnhsmqhqwzgbsfqqccfznjtnnzdrgcvwnlffdgvvqzvwhwfswdmqlrsglntzsnwjzgrhhwzzshwsfmlmrbnmrqlptmjgmtqctrmddzghsgtrbbcsmhtcnrzwmvrjmrnmhbjmflrclvlbzwbgmtnmwqgfmbbnnrdvhqcflglvzbmjzjtvnmrbgghnccfrphjshsgtrhfmmghhpwgclfvzfbdccsfrlfwtsjjnhlndpwcjdtlllhcsvwrwsbppqwhfcvnsnrvthrsbgmgjhpmjdndmdqdgzfvbqfmgfjrnrjchstrjprfwfnjqblhjdgsstvtpcsvmpbhggnwzncpjdhrcllcghhprhwhfgsqpfzphrdlcbrccglsb diff --git a/2022/day06/main b/2022/day06/main Binary files differnew file mode 100755 index 0000000..9963238 --- /dev/null +++ b/2022/day06/main diff --git a/2022/day06/main.c b/2022/day06/main.c new file mode 100644 index 0000000..5b96fb9 --- /dev/null +++ b/2022/day06/main.c @@ -0,0 +1,26 @@ +#include <stdlib.h> +#include <stdio.h> + +int main() +{ + char *line = 0; + size_t len; + ssize_t nlen = getline(&line, &len, stdin); + int distinctChars = 4; + for (int i = distinctChars -1; i < nlen; i++) + { + int isTwoEqual = 0; + for (int ii = 0; ii < distinctChars; ii++) + { + for (int iii = 0; iii < distinctChars; iii++) + { + if (ii == iii) continue; + isTwoEqual |= (line[i-ii] == line[i-iii]); + } + } + if ( !isTwoEqual ) { + printf("%d\n", i+1); + return 0; + } + } +} diff --git a/2022/day06/main2.c b/2022/day06/main2.c new file mode 100644 index 0000000..3ab3786 --- /dev/null +++ b/2022/day06/main2.c @@ -0,0 +1,26 @@ +#include <stdlib.h> +#include <stdio.h> + +int main() +{ + char *line = 0; + size_t len; + ssize_t nlen = getline(&line, &len, stdin); + int distinctChars = 14; + for (int i = distinctChars -1; i < nlen; i++) + { + int isTwoEqual = 0; + for (int ii = 0; ii < distinctChars; ii++) + { + for (int iii = 0; iii < distinctChars; iii++) + { + if (ii == iii) continue; + isTwoEqual |= (line[i-ii] == line[i-iii]); + } + } + if ( !isTwoEqual ) { + printf("%d\n", i+1); + return 0; + } + } +} diff --git a/2022/day07/input1.txt b/2022/day07/input1.txt new file mode 100644 index 0000000..09a921e --- /dev/null +++ b/2022/day07/input1.txt @@ -0,0 +1,23 @@ +$ cd / +$ ls +dir a +14848514 b.txt +8504156 c.dat +dir d +$ cd a +$ ls +dir e +29116 f +2557 g +62596 h.lst +$ cd e +$ ls +584 i +$ cd .. +$ cd .. +$ cd d +$ ls +4060174 j +8033020 d.log +5626152 d.ext +7214296 k diff --git a/2022/day07/input2.txt b/2022/day07/input2.txt new file mode 100644 index 0000000..1d69f2d --- /dev/null +++ b/2022/day07/input2.txt @@ -0,0 +1,1030 @@ +$ cd / +$ ls +dir dtcfhsm +dir hblzj +dir jbssdwf +35442 jrfpjdpw.znd +dir ljv +dir nhp +31592 qtwnndbg.rsh +326062 sjc.mvn +235205 wmtvbq +$ cd dtcfhsm +$ ls +206818 czgnjmw +dir drjhjtm +dir hjlmf +dir jllhmmf +187778 jrfpjdpw.znd +49334 lljh.jhb +dir qtwnndbg +dir sshvc +dir tzhbztd +290622 vmwddb +214581 wmtvbq +dir wqcsrw +dir zjbzdrnd +$ cd drjhjtm +$ ls +dir cvrf +dir gddqh +dir qccmn +dir qjgv +dir sjgwv +$ cd cvrf +$ ls +233913 frfvjtt.dhv +30000 ljcmscc.jvh +61418 mcs.blh +227397 swd.mrf +dir tpwvvbh +120888 vsrfw.gvd +$ cd tpwvvbh +$ ls +266824 qtwnndbg +dir sdwjz +dir vrgjhvrd +88616 wmtvbq +dir wqcsrw +$ cd sdwjz +$ ls +269696 jrfpjdpw.znd +$ cd .. +$ cd vrgjhvrd +$ ls +67409 sddmdd.dsb +$ cd .. +$ cd wqcsrw +$ ls +dir ttgwphbc +$ cd ttgwphbc +$ ls +178435 csjzz.vcd +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd gddqh +$ ls +dir cfvpq +318413 jrfpjdpw.znd +dir wwv +$ cd cfvpq +$ ls +dir ljncp +175740 ljv.nqn +$ cd ljncp +$ ls +146594 rhjlds.nfm +$ cd .. +$ cd .. +$ cd wwv +$ ls +dir zqzch +$ cd zqzch +$ ls +dir jllhmmf +$ cd jllhmmf +$ ls +dir pvqhg +$ cd pvqhg +$ ls +76789 ntdtbnr +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd qccmn +$ ls +dir czpnrsfc +123617 jrcgldd.pvd +$ cd czpnrsfc +$ ls +316779 lqtw.vtp +dir tdwmpl +$ cd tdwmpl +$ ls +84395 rvqgwwz.rbq +$ cd .. +$ cd .. +$ cd .. +$ cd qjgv +$ ls +173535 qtwnndbg.clf +73941 wldfq.rjm +327245 zfqsvs.qwh +$ cd .. +$ cd sjgwv +$ ls +307757 mvgmfhh.thn +$ cd .. +$ cd .. +$ cd hjlmf +$ ls +313069 qlmlvvvg +$ cd .. +$ cd jllhmmf +$ ls +180570 chhgrj +dir fqqnjd +dir hmz +dir ljv +dir lrlqc +dir pfvmhz +299487 tnhwncj.nfv +dir wqcsrw +$ cd fqqnjd +$ ls +131810 mcm.pbj +237810 mvgmfhh.thn +199479 qrqpl +281772 vmwddb.qbh +$ cd .. +$ cd hmz +$ ls +319803 lqtw.vtp +111388 mgdwvvqd +38536 mlqsbjr.npn +85619 vmwddb.vhq +$ cd .. +$ cd ljv +$ ls +dir vmwddb +$ cd vmwddb +$ ls +dir bgdchqwj +$ cd bgdchqwj +$ ls +147734 jrfpjdpw.znd +$ cd .. +$ cd .. +$ cd .. +$ cd lrlqc +$ ls +327255 wmtvbq +$ cd .. +$ cd pfvmhz +$ ls +dir bpdv +dir cgnhzrb +dir cpgvb +71305 mmlbp.hnw +207351 rgwgmtr +223983 sgmlt.nrj +$ cd bpdv +$ ls +50169 stvpjws.pbn +$ cd .. +$ cd cgnhzrb +$ ls +328146 fzd.fgm +307323 gnmgw.rsf +311890 tmrdgzmm +$ cd .. +$ cd cpgvb +$ ls +241313 vzgnlqzh.fcb +$ cd .. +$ cd .. +$ cd wqcsrw +$ ls +dir jllhmmf +$ cd jllhmmf +$ ls +dir jllhmmf +$ cd jllhmmf +$ ls +161384 rvqgwwz.rbq +2778 zlbgrzs.jlv +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd qtwnndbg +$ ls +222554 qtwnndbg +20197 rrnmgz.hsj +135325 rvqgwwz.rbq +dir rzbjntjl +81086 tbsj.zns +275538 wqcsrw +$ cd rzbjntjl +$ ls +315148 lqtw.vtp +$ cd .. +$ cd .. +$ cd sshvc +$ ls +37541 mvgmfhh.thn +27276 vwwpbqq +$ cd .. +$ cd tzhbztd +$ ls +dir gcrfzd +dir ltvhvt +dir qtwnndbg +dir rgqwp +dir wqcsrw +$ cd gcrfzd +$ ls +319338 jrfpjdpw.znd +24471 wmtvbq +77828 zcbwwf +210897 zgfncbmh +169336 zvrfwmgm +$ cd .. +$ cd ltvhvt +$ ls +dir qtwnndbg +1644 rqr +114660 sfvv.frz +dir shl +dir vmwddb +dir wqcsrw +$ cd qtwnndbg +$ ls +dir hgfvpn +dir jcgr +dir ljv +dir scrd +dir zwwclfj +$ cd hgfvpn +$ ls +83476 nrpjcnz.psn +$ cd .. +$ cd jcgr +$ ls +dir jhvqhq +dir zhdch +$ cd jhvqhq +$ ls +dir ljv +$ cd ljv +$ ls +213483 hsjbmv +165211 rvqgwwz.rbq +48993 wmtvbq +$ cd .. +$ cd .. +$ cd zhdch +$ ls +126929 zsmpbnml.qbl +$ cd .. +$ cd .. +$ cd ljv +$ ls +60596 jrfpjdpw.znd +$ cd .. +$ cd scrd +$ ls +313679 nmhhp.bvt +199353 wmtvbq +$ cd .. +$ cd zwwclfj +$ ls +dir czqszmf +dir dmv +dir pgjwmnwf +dir whpmfw +$ cd czqszmf +$ ls +181716 jrfpjdpw.znd +$ cd .. +$ cd dmv +$ ls +303356 qtwnndbg.phh +$ cd .. +$ cd pgjwmnwf +$ ls +59757 cbdggnvh.szc +$ cd .. +$ cd whpmfw +$ ls +102901 lqtw.vtp +162907 rvqgwwz.rbq +dir whd +$ cd whd +$ ls +dir rvqnddsb +$ cd rvqnddsb +$ ls +265936 wmtvbq +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd shl +$ ls +270493 llqj.cvz +199257 lvhrltd.cbq +44404 qqhvstd.vjd +$ cd .. +$ cd vmwddb +$ ls +176668 dsmjtpcm.vfr +$ cd .. +$ cd wqcsrw +$ ls +85545 wqcsrw.llm +$ cd .. +$ cd .. +$ cd qtwnndbg +$ ls +dir ljv +dir psqjqb +dir tnvlnmw +44316 wmtvbq +dir wqcsrw +$ cd ljv +$ ls +205777 jrfpjdpw.znd +279684 mvgmfhh.thn +dir ppw +dir rms +dir tsccztf +dir wqcsrw +$ cd ppw +$ ls +139214 ljv +dir vmwddb +$ cd vmwddb +$ ls +141988 fbgbwp.fwl +$ cd .. +$ cd .. +$ cd rms +$ ls +221170 crlhwdqs.rbp +$ cd .. +$ cd tsccztf +$ ls +dir csrc +dir dbtzwqj +dir vqw +$ cd csrc +$ ls +dir jllhmmf +281285 nwbcqwf.lqw +$ cd jllhmmf +$ ls +337404 qtwnndbg.qhb +$ cd .. +$ cd .. +$ cd dbtzwqj +$ ls +89297 clsblqf.sql +75292 jrfpjdpw.znd +242192 mvgmfhh.thn +$ cd .. +$ cd vqw +$ ls +43526 vrgfvcd.tsc +$ cd .. +$ cd .. +$ cd wqcsrw +$ ls +38096 lqtw.vtp +37490 mvgmfhh.thn +$ cd .. +$ cd .. +$ cd psqjqb +$ ls +9842 wqcsrw +$ cd .. +$ cd tnvlnmw +$ ls +dir cvgs +dir npslzj +dir qtwnndbg +dir tsshp +$ cd cvgs +$ ls +48820 jllhmmf.rjr +2036 sprlcwv +$ cd .. +$ cd npslzj +$ ls +dir bbj +227147 slfq.bdf +$ cd bbj +$ ls +77671 bsmgb +$ cd .. +$ cd .. +$ cd qtwnndbg +$ ls +121924 wmtvbq +$ cd .. +$ cd tsshp +$ ls +33269 jllhmmf +$ cd .. +$ cd .. +$ cd wqcsrw +$ ls +dir jllhmmf +$ cd jllhmmf +$ ls +133114 rvqgwwz.rbq +$ cd .. +$ cd .. +$ cd .. +$ cd rgqwp +$ ls +13207 djgldhd +120394 fpjppcp.sbr +296110 fwwqr.gzz +146254 nprjzt.fml +265873 wqcsrw +$ cd .. +$ cd wqcsrw +$ ls +dir bbjgh +157738 mvgmfhh.thn +dir njdnjmz +dir wqm +179080 wtgpwt.sqm +$ cd bbjgh +$ ls +2285 wqcsrw.cvn +$ cd .. +$ cd njdnjmz +$ ls +dir cfd +$ cd cfd +$ ls +95362 vmwddb.rgq +$ cd .. +$ cd .. +$ cd wqm +$ ls +235077 jrfpjdpw.znd +$ cd .. +$ cd .. +$ cd .. +$ cd wqcsrw +$ ls +11821 rvqgwwz.rbq +$ cd .. +$ cd zjbzdrnd +$ ls +273551 ljv.mtt +73077 ljv.rpz +dir sbqsqw +102241 wmtvbq +$ cd sbqsqw +$ ls +308189 drmlmhb.jqt +$ cd .. +$ cd .. +$ cd .. +$ cd hblzj +$ ls +dir cgm +113128 csgchmtn.drj +dir qlg +dir rsgbjpp +dir tpjpnjg +dir vmwddb +$ cd cgm +$ ls +dir dfm +dir fqhzrms +dir ljv +125604 lqtw.vtp +dir vtrs +56731 wmtvbq +$ cd dfm +$ ls +228574 ljv +$ cd .. +$ cd fqhzrms +$ ls +dir qtwnndbg +$ cd qtwnndbg +$ ls +230853 njvmtghw +$ cd .. +$ cd .. +$ cd ljv +$ ls +68290 fbrm.gdc +117256 jllhmmf.dvj +$ cd .. +$ cd vtrs +$ ls +150365 brt.dqc +313762 chhlg.fst +dir dtmjbfm +92651 ljv.sjz +306760 rrwh +276248 rvqgwwz.rbq +$ cd dtmjbfm +$ ls +270715 jllhmmf.vdw +20878 wmtvbq +$ cd .. +$ cd .. +$ cd .. +$ cd qlg +$ ls +dir fgv +131774 jrfpjdpw.znd +dir ldmpnbt +36604 mvgmfhh.thn +dir prhtj +dir vfsj +dir wqcsrw +$ cd fgv +$ ls +222821 wmtvbq +$ cd .. +$ cd ldmpnbt +$ ls +183619 tbfjvng +$ cd .. +$ cd prhtj +$ ls +201210 lpdvzs.ndv +309785 smmfht +$ cd .. +$ cd vfsj +$ ls +dir bzznmpc +123825 cbzvvdm.rvs +dir ghp +dir gwzm +313610 jrfpjdpw.znd +dir ndsfzz +34270 rjq.ttw +dir rsqhz +108776 rvqgwwz.rbq +dir tsmlpnbc +29065 wwqfpv.fgv +dir zmljzwt +$ cd bzznmpc +$ ls +147394 rft.fsn +$ cd .. +$ cd ghp +$ ls +dir bhvgpz +248463 gwwtl +285955 tccqqtbw.bzv +122937 zwqh +$ cd bhvgpz +$ ls +300057 jllhmmf +137933 jrfpjdpw.znd +170731 pstc.hjq +dir tvpw +$ cd tvpw +$ ls +226913 ltjtlcp.nfj +113485 mvgmfhh.thn +$ cd .. +$ cd .. +$ cd .. +$ cd gwzm +$ ls +33023 jrfpjdpw.znd +dir zwztrgr +$ cd zwztrgr +$ ls +310997 mtrfsv.jgn +$ cd .. +$ cd .. +$ cd ndsfzz +$ ls +dir bhfnclp +dir jllhmmf +15445 lqtw.vtp +68225 rvqgwwz.rbq +46093 spvrn +dir vdfmwrq +dir zwzlr +$ cd bhfnclp +$ ls +174231 mvgmfhh.thn +dir qgtrvmf +202378 qtwnndbg.cnp +124762 sctssqpq +$ cd qgtrvmf +$ ls +65851 mvgmfhh.thn +$ cd .. +$ cd .. +$ cd jllhmmf +$ ls +dir jmqltsd +dir mjzcf +281062 sjdmlqzs +dir vmjjtbl +$ cd jmqltsd +$ ls +327426 ddhs.qsp +$ cd .. +$ cd mjzcf +$ ls +229568 cjq.jss +227699 jrfpjdpw.znd +41949 pjzcq +62253 rvqgwwz.rbq +$ cd .. +$ cd vmjjtbl +$ ls +dir sjqpfc +$ cd sjqpfc +$ ls +dir mbpfvsg +dir vfwvtscb +$ cd mbpfvsg +$ ls +128515 lqtw.vtp +$ cd .. +$ cd vfwvtscb +$ ls +dir ljv +$ cd ljv +$ ls +dir nwbfd +$ cd nwbfd +$ ls +297506 mvgmfhh.thn +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd vdfmwrq +$ ls +dir ntm +$ cd ntm +$ ls +36060 vlvdhw.vlj +$ cd .. +$ cd .. +$ cd zwzlr +$ ls +126975 bfnpq.hzt +$ cd .. +$ cd .. +$ cd rsqhz +$ ls +dir cjzh +238925 crgfccz.hlg +dir dsssbm +197221 ftrdjhcn.grz +171860 jvvcpbh +60237 qtwnndbg.rwr +247770 whwf +$ cd cjzh +$ ls +105519 rvqgwwz.rbq +$ cd .. +$ cd dsssbm +$ ls +128213 dqsrbnjd.bwf +dir frmmlzv +318040 wmtvbq +$ cd frmmlzv +$ ls +127732 mvgmfhh.thn +37436 qtwnndbg.zzg +$ cd .. +$ cd .. +$ cd .. +$ cd tsmlpnbc +$ ls +dir bdb +dir ddjd +dir gbdm +dir grm +273561 hzszqjgf.ggp +$ cd bdb +$ ls +100286 qtwnndbg +$ cd .. +$ cd ddjd +$ ls +dir vmwddb +$ cd vmwddb +$ ls +261837 wqcsrw.mzq +$ cd .. +$ cd .. +$ cd gbdm +$ ls +233279 wmtvbq +$ cd .. +$ cd grm +$ ls +dir cghd +$ cd cghd +$ ls +8883 ncjc.vsj +$ cd .. +$ cd .. +$ cd .. +$ cd zmljzwt +$ ls +274821 lqtw.vtp +dir ltpmzrtf +dir qtwnndbg +dir shfjtm +$ cd ltpmzrtf +$ ls +222040 vmwddb.fcz +$ cd .. +$ cd qtwnndbg +$ ls +245288 lhbjpggt.rfr +dir ltgqs +dir nqngjr +161396 rmlm.psv +130067 vmwddb.ssz +$ cd ltgqs +$ ls +45032 vmwddb.zwl +$ cd .. +$ cd nqngjr +$ ls +296145 fbt +$ cd .. +$ cd .. +$ cd shfjtm +$ ls +dir dqv +dir jhgdb +dir jllhmmf +dir sczqst +dir zngqfcw +$ cd dqv +$ ls +327447 jllhmmf.ndg +$ cd .. +$ cd jhgdb +$ ls +138120 bdbjjfs.rtn +dir nfd +dir qwng +dir zwdbl +$ cd nfd +$ ls +dir tdslfhgq +$ cd tdslfhgq +$ ls +dir jnfrd +45044 jrfpjdpw.znd +133120 sdjzcfhh.dmm +$ cd jnfrd +$ ls +314151 wmtvbq +161805 zzctqr +$ cd .. +$ cd .. +$ cd .. +$ cd qwng +$ ls +202921 zvtlrb.sdf +$ cd .. +$ cd zwdbl +$ ls +219865 wmtvbq +$ cd .. +$ cd .. +$ cd jllhmmf +$ ls +258183 rvqgwwz.rbq +$ cd .. +$ cd sczqst +$ ls +37030 jrfpjdpw.znd +$ cd .. +$ cd zngqfcw +$ ls +dir fmwlfgm +254522 rvqgwwz.rbq +$ cd fmwlfgm +$ ls +229979 jgcr.qlt +282169 wwpwcjgv +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd wqcsrw +$ ls +111251 ghjbjfhg.nqs +$ cd .. +$ cd .. +$ cd rsgbjpp +$ ls +dir dchrnhrl +dir lsqztz +dir lwlh +dir slb +$ cd dchrnhrl +$ ls +45452 ctmp.cmv +dir gqznj +206243 mvgmfhh.thn +166028 szzzlft.lst +156182 trtgnc.gcr +75072 zrh +$ cd gqznj +$ ls +251328 ljv.tpg +24996 lqtw.vtp +$ cd .. +$ cd .. +$ cd lsqztz +$ ls +dir cmrqhlf +$ cd cmrqhlf +$ ls +290574 wzbg.fdp +$ cd .. +$ cd .. +$ cd lwlh +$ ls +dir flc +dir pjm +dir vhs +140257 wqcsrw +dir zqwvr +$ cd flc +$ ls +75721 fbhzn +84992 jrfpjdpw.znd +2018 rvqgwwz.rbq +$ cd .. +$ cd pjm +$ ls +dir bzctws +213358 jllhmmf.vlr +243414 jrfpjdpw.znd +dir ljv +dir vjjhgjmp +$ cd bzctws +$ ls +89520 ljv.nbf +$ cd .. +$ cd ljv +$ ls +210757 fnnbm +$ cd .. +$ cd vjjhgjmp +$ ls +dir ljv +dir qvpcmscg +dir rsbdmvjq +219321 wjcwpt.psz +dir wqcsrw +$ cd ljv +$ ls +137884 jrfpjdpw.znd +$ cd .. +$ cd qvpcmscg +$ ls +36087 gwflqqnm.qjb +82032 pmqfdv +242377 qpth +$ cd .. +$ cd rsbdmvjq +$ ls +223158 wmtvbq +72999 zchc.wfg +$ cd .. +$ cd wqcsrw +$ ls +dir ljv +$ cd ljv +$ ls +dir mrw +$ cd mrw +$ ls +271684 tmnldb.rgb +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd vhs +$ ls +dir hsjs +dir jhvqqcls +172468 rvqgwwz.rbq +$ cd hsjs +$ ls +227982 jrfpjdpw.znd +323849 wmtvbq +$ cd .. +$ cd jhvqqcls +$ ls +dir wqcsrw +$ cd wqcsrw +$ ls +145011 twdzdhrb.nsw +$ cd .. +$ cd .. +$ cd .. +$ cd zqwvr +$ ls +333371 rvqgwwz.rbq +144186 vmwddb.htb +$ cd .. +$ cd .. +$ cd slb +$ ls +101405 jrfpjdpw.znd +80571 lqtw.vtp +212763 rfqt.cvz +242678 ssrbmlwn.rgn +204742 tftbz +$ cd .. +$ cd .. +$ cd tpjpnjg +$ ls +37762 wqcsrw.vhz +$ cd .. +$ cd vmwddb +$ ls +dir ctgzpnn +237933 hhv +dir lwvcw +dir wpw +$ cd ctgzpnn +$ ls +dir jbfqtvhl +100662 jhp +117832 lqtw.vtp +225417 mvgmfhh.thn +21553 rvqgwwz.rbq +240333 sbmzdqrc +dir shnnqff +$ cd jbfqtvhl +$ ls +37115 ljv.rws +73007 wqcsrw +$ cd .. +$ cd shnnqff +$ ls +294441 frghtdtd.qwf +dir srbf +dir vmwddb +$ cd srbf +$ ls +dir fqhhcdcm +$ cd fqhhcdcm +$ ls +142423 vmwddb.snc +$ cd .. +$ cd .. +$ cd vmwddb +$ ls +dir jllhmmf +dir ljv +61218 nsmtdl +58661 wqcsrw +$ cd jllhmmf +$ ls +6984 qdjnldqn +231401 sfcwg +$ cd .. +$ cd ljv +$ ls +110331 jfjsgfn.lvq +269960 mvgmfhh.thn +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd lwvcw +$ ls +115763 mvgmfhh.thn +$ cd .. +$ cd wpw +$ ls +187278 lqtw.vtp +$ cd .. +$ cd .. +$ cd .. +$ cd jbssdwf +$ ls +31839 ljcttp +$ cd .. +$ cd ljv +$ ls +270886 jrfpjdpw.znd +$ cd .. +$ cd nhp +$ ls +dir sgffh +$ cd sgffh +$ ls +76321 psbpb.sqj diff --git a/2022/day07/main b/2022/day07/main Binary files differnew file mode 100755 index 0000000..2569466 --- /dev/null +++ b/2022/day07/main diff --git a/2022/day07/main.c b/2022/day07/main.c new file mode 100644 index 0000000..8df3e04 --- /dev/null +++ b/2022/day07/main.c @@ -0,0 +1,111 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +typedef struct Dir_ Dir; + +typedef struct Dir_ { + char name[32]; + int size, dir; + int children; + Dir *parent; + Dir *files[32]; +} Dir; + +Dir* changeDir(Dir *dir, Dir *root, char *name) +{ + printf("cd %s\n", name); + if ( name[0] == '/' ) return root; + if ( name[0] == '.' ) return dir->parent; + + for ( int i = 0; i < dir->children; i++ ) + { + if(strcmp( dir->files[i]->name, name ) == 0) + { + return dir->files[i]; + } + } +} + +void list(Dir *dir, int d) +{ + for (int i = 0; i < d; i++) printf("'-"); + printf("%s", dir->name); + if (dir->dir) printf(" (d)"); + else printf(" %d", dir->size); + printf("\n"); + for (int i = 0; i < dir->children; i++) + { + list(dir->files[i], d+1); + } +} + +int findlarge(Dir *dir, int *globalsum) { + + if (!dir->dir) { + return dir->size; + } + + int sum = 0; + for (int i = 0; i < dir->children; i++) + { + sum += findlarge(dir->files[i], globalsum); + } + if (sum <= 100000) { + *globalsum += sum; + } + + return sum; +} + +int main() +{ + + char *line = 0; + size_t len; + ssize_t nlen; + + Dir *root = malloc(sizeof(Dir)); + root->children = 0; + root->dir = 1; + strcpy(root->name, "/"); + Dir *head = root; + + int globalsum = 0; + + while( (nlen = getline(&line, &len, stdin)) != -1 ) + { + line[nlen-1] = '\0'; + if ( line[0] == '$' ) + { + if ( line[2] == 'c' ) head = changeDir(head, root, line+5); + } + else if ( line[0] == 'd' ) + { + Dir *newdir = malloc(sizeof(Dir)); + strcpy(newdir->name, line+4); + newdir->dir = 1; + newdir->children = 0; + newdir->parent = head; + head->files[head->children] = newdir; + head->children++; + } + else { + Dir *newdir = malloc(sizeof(Dir)); + newdir->size = atoi( strsep(&line, " ") ); + strcpy(newdir->name, strsep(&line, " ")); + head->files[head->children] = newdir; + head->children++; + + // printf("file %d %s\n", newdir->size, newdir->name); + // printf("name %s\n", root->files[0]->name); + } + printf("cmd '%s' head: %s\n", line, head->name); + list(root, 0); + } + + list(root, 0); + + findlarge(root, &globalsum); + printf("sum: %d\n", globalsum); +} diff --git a/2022/day07/main2.c b/2022/day07/main2.c new file mode 100644 index 0000000..5121e4a --- /dev/null +++ b/2022/day07/main2.c @@ -0,0 +1,118 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +typedef struct Dir_ Dir; + +typedef struct Dir_ { + char name[32]; + int size, dir; + int children; + Dir *parent; + Dir *files[32]; +} Dir; + +Dir* changeDir(Dir *dir, Dir *root, char *name) +{ + printf("cd %s\n", name); + if ( name[0] == '/' ) return root; + if ( name[0] == '.' ) return dir->parent; + + for ( int i = 0; i < dir->children; i++ ) + { + if(strcmp( dir->files[i]->name, name ) == 0) + { + return dir->files[i]; + } + } +} + +void list(Dir *dir, int d) +{ + for (int i = 0; i < d; i++) printf("'-"); + printf("%s", dir->name); + if (dir->dir) printf(" (d)"); + else printf(" %d", dir->size); + printf("\n"); + for (int i = 0; i < dir->children; i++) + { + list(dir->files[i], d+1); + } +} + +int findlarge(Dir *dir, int *globalmin, int *localmin) { + + if (!dir->dir) { + return dir->size; + } + + int sum = 0; + for (int i = 0; i < dir->children; i++) + { + sum += findlarge(dir->files[i], globalmin, localmin); + } + if (sum >= *globalmin && sum < *localmin) { + *localmin = sum; + } + + return sum; +} + +int main() +{ + + char *line = 0; + size_t len; + ssize_t nlen; + + Dir *root = malloc(sizeof(Dir)); + root->children = 0; + root->dir = 1; + strcpy(root->name, "/"); + Dir *head = root; + + int globalmin = 0; + int localmin = 70000000; + + int rootsize = 0; + + while( (nlen = getline(&line, &len, stdin)) != -1 ) + { + line[nlen-1] = '\0'; + if ( line[0] == '$' ) + { + if ( line[2] == 'c' ) head = changeDir(head, root, line+5); + } + else if ( line[0] == 'd' ) + { + Dir *newdir = malloc(sizeof(Dir)); + strcpy(newdir->name, line+4); + newdir->dir = 1; + newdir->children = 0; + newdir->parent = head; + head->files[head->children] = newdir; + head->children++; + } + else { + Dir *newdir = malloc(sizeof(Dir)); + newdir->size = atoi( strsep(&line, " ") ); + strcpy(newdir->name, strsep(&line, " ")); + head->files[head->children] = newdir; + head->children++; + + rootsize += newdir->size; + + // printf("file %d %s\n", newdir->size, newdir->name); + // printf("name %s\n", root->files[0]->name); + } + printf("cmd '%s' head: %s\n", line, head->name); + list(root, 0); + } + + list(root, 0); + + globalmin = 30000000 - (70000000 - rootsize); + + findlarge(root, &globalmin, &localmin); + printf("sum: %d\n", localmin); +} diff --git a/2022/day08/input1.txt b/2022/day08/input1.txt new file mode 100644 index 0000000..16d6fbd --- /dev/null +++ b/2022/day08/input1.txt @@ -0,0 +1,5 @@ +30373 +25512 +65332 +33549 +35390 diff --git a/2022/day08/input2.txt b/2022/day08/input2.txt new file mode 100644 index 0000000..ffdd5b1 --- /dev/null +++ b/2022/day08/input2.txt @@ -0,0 +1,99 @@ +011201001000123232122300403211332202122424332111151523152310403222120311202224013311113203311122001 +102201211220103202323002411123324024134251423232343141424431144431022143443131141222323122010012220 +002022232232102013311311301321044421352134513235443522243113311323213013301030440423203311103101020 +002212021110130112400112141310424411421435324412235335534245212325313312413434430114302030310200000 +202000312203303110042324124431114212153432535412115323131323541522511253002131401212012131031321110 +120203002030304244102444143021314124552253521343321513511124144454343454102412220143321013220111212 +012133330030200444414333325255125142322121412245551424242135123513411533153323130432231002121211210 +012300220003100211444401144353345522135453435223464636451554321531323513234331131114224102232333310 +000201310302031301344341134512444312432566266533252332656654251123535525135213300040211242011230031 +121002133124022203240512452433331223524622643252532325346635555552514352434233454024134201432001111 +112213110140442401434531255323512525265655352543623565556265545555235551143135124203142220020302000 +033001202421424143555311243322416262636322654432542644633525453666655354514351121150231101002002310 +133303044321221102531154151541224245536464535622566355532543644552554644312231415325142303020031312 +112333344411024045335422225146442243536464622553556234523445362524655623435243115242532313102020021 +123023422310204444121415255225254435644446326664473564435422565325224635623542352154120001224144312 +102303024142131515433355242322223363453633455657436436574636544336652564626641215232314243234004001 +021344140434455245134415553542352643537665534644574553367446664254532523624521243554252411433032112 +100140101131444142414254644644434663647646555637737475474473636562243265243536422253531252202124322 +111043301134142345422324342454235374733474673456744577746755765343355535622342432251442244140231224 +232120141224122324244532255543256467566454337465647735433663734756446566663442525425254525142212311 +102310340244433433553362546534535757453376643763344566566557634664535744445254533545223521213213014 +330111232252114431226334564636467643777466445537346735563633337744734474466254662225321443542401243 +344311321253412213666443354643647347656735478884748547564466577774737677363226422622515344334010341 +222340105234132533423442424376674757757675647476557547564445666676437755355626455436313331225343402 +334241221121414455435265324646757456774784864846746867457546648735456677555624445353555434433340341 +333430021343121666326363537633737767788775478777445558858444854755434544735362564626265444342330020 +332224425333452333556456745375454657668644877658744844547774765844454475434765533256545152435214410 +411322431421116436336347456774356844455867864644844878664785864444475567664473365652253123453220003 +130345455115155526426437663665665668576686587847778476557678655576775553535745643522532344433523042 +241333521455132466523664543556384776587787745658797755565556576546847447434775733626365325451531301 +202135433134452323646546565545646885747548679876767658578565476458486465755545465664435422532454541 +344025243154435524235475655536845545775797795959686975588855546544875685664377465455353661444452422 +120511445324333353265334766654858656857755669695597899959957757545465687447345336332322634434414522 +041425252513666643357433333888555778459755889566967799659865567757457567576463765323236366123221323 +142343534134652443554434768544658774587669979986775985989879787975445856456554364645323653454511323 +443155144123223566654765746758688875856899955996667659755976778586644774777456744653322566354532232 +013242522162435447764573774877757879868788876799896979576555597985885468586473474464455426633333452 +101431333345553353553337548577478656967866886877887889699999856979976485874455544477534422463331314 +422325541533664573334736464857446675995799977868697688998787757585668584775766563477536636621514142 +313315332565562573637376866486547776557979868979996867779966955885566785455767644565336236452541411 +231122455364326235655644685888786685587796897688777698977986787596655865857448333576665523356143332 +314415154446535337443754887576795586569678967879977696896667866768856785586774365336636426455324541 +251324556334435537567468544665859588888869687767876697967887867856679658788866355353346553442543353 +134353225423362456734666455757877769577678987866887877799886886885859796767664444665534363236114533 +251241346545626367667578575687955957988796678987999979977897978877579787844755554533763646262143315 +353543555544353753474346565789555799696999667888997899777669899867697878476845756644734243432245123 +221521465632632737777766744748678869769669668898887888987898666789869785645678734643552655525624335 +351552456455622567337644647486678857766866879798779999878779869885869788874885873744772665326352324 +153242153665224557353455465857685566797887699998988788877767696668668675666664465757646436665554315 +321113152666424547657348876876678597898779877779998999978978777885976658558676664444674243656333212 +421511245364456777655754476646885699898678788797778788778778999795687589454774563737333365434325525 +213532265252653474345766566877669898969767779777879797899977669868595997784466766655547455234435452 +125232235356525353764645486577668857868788699799787978898988669878688867586564457353673236664223343 +441242562562223643773466848558599657669669968987979987787969676777796877655876456745562442232541525 +135122156635652746574578664849659556998698797778797889988788869797687977855447474475546334662522444 +144315413442434666777478887855885568968799966889978797797867786966685589646488554737453225335213325 +511213234443636433646678657654587788667696879878989799867699988765895758788675765445656425425334544 +052145146243336363474565857687976889776768867898889967686967668565998666768575534675445244546424155 +235513424332444756467574556745997958679678999799789777998968876679956958746554677637762355253554335 +331155256654246447545776676487485655676699678967897779688898989999768655488874564764434223445132152 +152152253254255234473347878744485766678897879689897888667968795675655864748584644653323363464154251 +245154344235223346354765457746867586969968687876867899766986679689585778787473555663424264553541344 +235253541263666477544377746867785766579566868896689699876766695956667455774677646576554255521144355 +033522343456423455634354575764856898657669957896677776766596688857787474488436433455326554242331222 +321532413246333226435563556578864759978657759897896799958558598588975755858856537673332523244522141 +101422552442534324467345475684574877989759655788785857697957976679848768474665346435664653421242444 +103425135453353666736674677847548667967885667765576995797857589796866646565443377775564436443333543 +041131245522253556554636537878457787468577768876778599999689667978487755747676763666266652435545351 +424232344536333364556466767555646468677996965895798968676966868665587584664535544755645232211324114 +334034423343366322247357747635787857555667756956768657779596877655676555367754633345545442422145333 +424344345121532564223643563774744574746844686888885779565686455664565643634566756543362551431252401 +232123114442152332546734767375678475664877645798695799654765488755876545334345452455463633534433233 +414423121145222454332477456654436757485685646546884446667744645744675377357654436554353221451345404 +234130223314353235262655676637577858558554556467788664555466588778677546456334642623666524333250443 +414001252524152463224524734765775677644765886656877578666575855788653533364773455446565352432424320 +024323134311552535243564667476365737764685474446876486685546667685363735646643655435355533243440034 +331141044111451522226436327536773637654887585478885586588745847444466365767232265352211455413531431 +241321311312323233252665352455436545735388846445565487667644555744667753556266645332452431541341044 +234030032312154414563442653244476576544654676884777445766434443476675746365245632242515342521301442 +202112004552434344564624422526757574735736566643654737673776743354737744242533546523434111443034202 +323422334452422412134566522262537334374446646774476534347655656336555632626663364214333341322443300 +031243421344143515452456444553266345437737337675574563437533573575456463665443432215213541123241240 +002114441013421154331235436253442576764555535635775735635377573353666526333623554524421352131443020 +111342301013125124521245222663363363467436357434736773473777464564655622533254352444544553311114233 +222323000331131531351433363334345533653474663466435557365553376535246564324662454422135233103003200 +002103300342403311123432563445263435443255635353333564444573456633466424623313351545133022013122320 +300304042333200223123432352234525626625234236453763536563235242224645265643515312312520000242200000 +210121244033001141551213125554433445222532265463624234562324443435344362451243522525243002401410013 +303323342040431313415255233251226626334264553655346266323665655652522363324341123235410333230402230 +300112203021311400115231251543524354554262365526643622264625434236554412121342322522123434120120203 +011001023222004142422445443143212526654365444643442536365453622222634154551441553400220414300301332 +230032020342121242113341435444543253355352433246243543645634456552525315313143243431133302112320020 +232132202131312144424224413332214322543242664652323324456222615212244414145113442320023403200012111 +112222030320432400004224215552515412325221525356363643351335211141344255554442403013303120331312202 +110321230332323212301432002424211134155124241552254334221154111545254253122214132321141212032221001 +021020121321302320401011302153145251455114411155452245422422135453412153112033343412340101230302010 +122203012232330222213342133012334131225335225325343355122151154444535354414423434423220001330003020 +221120213213221333210131242440001425551432522221141211124544343151315104244333311124033221102312011 +202201033331203122413021242022211002455531321354252412214332215513311231404032244320020330332301120 diff --git a/2022/day08/main b/2022/day08/main Binary files differnew file mode 100755 index 0000000..e2d2028 --- /dev/null +++ b/2022/day08/main diff --git a/2022/day08/main.c b/2022/day08/main.c new file mode 100644 index 0000000..f80b1d0 --- /dev/null +++ b/2022/day08/main.c @@ -0,0 +1,36 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +int main(int argc, char *argv[] ) +{ + FILE *file = fopen(argv[1], "r"); + size_t size; + + fseek(file, 0, SEEK_END); // seek to end of file + size = ftell(file); // get current file pointer + fseek(file, 0, SEEK_SET); // seek back to beginning of file + + char *line = NULL; + size_t len; + ssize_t nlen; + char *forrest, *pf; + + while ((nlen = getline(&line, &len, file)) != -1) + { + if (forrest == 0) + { + forrest = pf = malloc( (size / nlen) * sizeof(char*) ); + int i=0; + for (; *pf != 0; pf++) + { + i++; + } + printf("%d, %zu, %zd", i, size, nlen); + } + + } + + +} + diff --git a/2022/day08/main.py b/2022/day08/main.py new file mode 100644 index 0000000..45ba142 --- /dev/null +++ b/2022/day08/main.py @@ -0,0 +1,39 @@ +import sys + +def isVisible(lines, row, col): + if ( row == 0 or col == 0 or row == len(lines)-1 or col == len(lines[0])-1): + return True + + if all(x[col] < lines[row][col] for x in lines[:row]): + return True + + if all(x[col] < lines[row][col] for x in lines[row+1:]): + return True + + if all(x < lines[row][col] for x in lines[row][:col]): + return True + + if all(x < lines[row][col] for x in lines[row][col+1:]): + return True + + return False + +with open(sys.argv[1], "r") as file: + lines = file.readlines() + for a in range(len(lines)): + lines[a] = lines[a].rstrip() + # a = a.rstrip() + + visible=0 + for row in range(len(lines)): + for col in range(len(lines[0])): + # print(lines[row][col], end="") + yes = isVisible(lines, row, col) + visible += yes + if yes: + print("1", end="") + else: + print("_", end="") + print() + + print(visible) diff --git a/2022/day08/main2.py b/2022/day08/main2.py new file mode 100644 index 0000000..a2a7df2 --- /dev/null +++ b/2022/day08/main2.py @@ -0,0 +1,49 @@ +import sys + +def isVisible(lines, row, col): + scenic = 1 + score1 = 0 + for x in lines[:row:-1]: + if ( x[col] >= lines[row][col]): + break + score1 += 1 + scenic *= score1 + + score2 = 0 + for x in lines[row+1:]: + if ( x[col] >= lines[row][col]): + break + score2 += 1 + scenic *= score2 + + score3 = 0 + for x in lines[row][:col:-1]: + if ( x >= lines[row][col]): + break + score3 += 1 + scenic *= score3 + + score4 = 0 + for x in lines[row][col:]: + if ( x >= lines[row][col]): + break + score4 += 1 + scenic *= score4 + + print(row, col, score1, score2, score3, score4, scenic) + return scenic + +with open(sys.argv[1], "r") as file: + lines = file.readlines() + for a in range(len(lines)): + lines[a] = lines[a].rstrip() + # a = a.rstrip() + + best=0 + for row in range(len(lines)): + for col in range(len(lines[0])): + # print(lines[row][col], end="") + yes = isVisible(lines, row, col) + best = max(best, yes) + + print(best) |