יום שלישי, 15 בדצמבר 2020

חידת מצו"ב לחנוכה

חידת מצו"ב לחנוכה

זו חידה קשה במיוחד. בהצלחה.


כתבתי סקריפט בפייתון שתוכלו לנסות בו את הפתרון שלכם (רק הפתרון חסר):
https://pastebin.com/vRG9u2t2

והנה פתרון בשני אנשים (בחידה צריך 100):
https://pastebin.com/nPtQKG2n


...

אחרי ששברתם את הראש, הנה פתרון מלא:


יום שני, 25 במאי 2020

להריץ Linux Terminal ישירות על Win10 ללא VM


מדריך להרצת Linux Terminal ישירות מ-Windows 10, על מערכת הקבצים הרגילה שלכם!
כן, תוכלו להשתמש בפקודות לינוקס האהובות עליכם, grep, ssh, apt ועוד.



שלבים:
- תורידו את Windows Terminal מהחנות. (תוכנה נוחה בכל מקרה לניהול מספר terminals).

- פיתחו PowerShell כאדמין ותתקינו WSL עם הפקודה:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart


- עכשיו ניתן להתקין הפצות לינוקס כרצונכם.
בדוגמה הזו, תתקינו את Ubuntu 20.04 LTS מהחנות.

- תפעילו מחדש את המחשב.

- תריצו את הלינוקס שהורדתם (יופיע אייקון תחת 'התחל'), קיבעו שם משתמש וסיסמה, וסיימתם.

- תוכלו עכשיו לפתוח את Windows Terminal, ללחוץ על ה'חץ' למעלה, לבחור Ubuntu-20.04 ולהתחיל להריץ פקודות לינוקס.




יום שלישי, 24 בדצמבר 2019

גימטריה בפייתון

המרת מספר לגימטריה
לאחרונה הייתי צריך להמיר ערך מספרי לגימטריה העברית שלו.

דוגמאות:
2   - ב
18  - יח
47  - מז
283 - רפג
411 - תיא


הנה המחלקה והבדיקות שיצרתי:
עריכה: עכשיו המחלקה זמינה להורדה מהירה עם pip. למידע נוסף.

# gematria_test.py

import unittest
from unittest.case import expectedFailure

def main():
    gematria = Gematria()
    for number in range(11000):
        heb_value = gematria.number_to_hebrew(number)
        print(heb_value)
         
class Gematria:
    _heb_letters = [
        ("א"1), 
        ("ב"2), 
        ("ג"3), 
        ("ד"4), 
        ("ה"5), 
        ("ו"6), 
        ("ז"7), 
        ("ח"8), 
        ("ט"9), 
        ("י"10), 
        ("כ"20), 
        ("ל"30), 
        ("מ"40), 
        ("נ"50), 
        ("ס"60), 
        ("ע"70), 
        ("פ"80), 
        ("צ"90), 
        ("ק"100), 
        ("ר"200), 
        ("ש"300), 
        ("ת"400)
        ]

    def number_to_hebrew(selfnumber):
        if number <= 0:
            raise Exception("Number must be bigger than zero")
        if number >= 1000:
            raise Exception("Number bigger than 999 is not supported yet")

        remainder = number
        heb_sum = ""
        while remainder > 0:
            for heb_letter, val in self._heb_letters[::-1]:
                if (val <= remainder):
                    if remainder == 15:
                        heb_sum += "טו"
                        remainder = 0
                    elif remainder == 16:
                        heb_sum += "טז"
                        remainder = 0
                    else:
                        heb_sum += heb_letter
                        remainder -= val
                    break
        return heb_sum

class Test_Gematria(unittest.TestCase): 
    gematria = Gematria()

    def test_simple_num(self):
        self.assertEqual(self.gematria.number_to_hebrew(3), "ג")

    def test_15_num(self):
        self.assertEqual(self.gematria.number_to_hebrew(15), "טו")

    def test_16_num(self):
        self.assertEqual(self.gematria.number_to_hebrew(16), "טז")

    def test_random_tens_num_1(self):
        self.assertEqual(self.gematria.number_to_hebrew(24), "כד")

    def test_random_tens_num_2(self):
        self.assertEqual(self.gematria.number_to_hebrew(77), "עז")

    def test_random_hundreds_num_1(self):
        self.assertEqual(self.gematria.number_to_hebrew(250), "רנ")

    def test_random_hundreds_num_2(self):
        self.assertEqual(self.gematria.number_to_hebrew(499), "תצט")

    def test_bigger_than_800_num(self):
        self.assertEqual(self.gematria.number_to_hebrew(822), "תתכב")

    def test_hundreds_num_that_ends_with_15(self):
        self.assertEqual(self.gematria.number_to_hebrew(515), "תקטו")

    def test_hundreds_num_that_ends_with_16(self):
        self.assertEqual(self.gematria.number_to_hebrew(516), "תקטז")

    def test_zero(self):
        with self.assertRaises(Exception):
            result = self.gematria.number_to_hebrew(0)

    def test_minus(self):
        with self.assertRaises(Exception):
            result = self.gematria.number_to_hebrew(-1)

    def test_too_big(self):
        with self.assertRaises(Exception):
            result = self.gematria.number_to_hebrew(1000)

if __name__== "__main__":
    main()
    # unittest.main() 



פשוט וקל.