• 0 Posts
  • 497 Comments
Joined 1 year ago
cake
Cake day: August 24th, 2023

help-circle




  • I know this is a day old and most people who would have seen this already have moved on, but this is a simple fix. In fact if you have secure boot enabled, the Nvidia driver installation will detect it and start the signing process. If you don’t have secure boot enabled, then it will skip it. I think having secure boot enabled and properly signing your drivers is good to not end up in that situation again. Though I understand how annoying it can be too. Sigh







  • Yeah I feel as though he won’t get that amount of money either and making any money is also outrageous.

    I feel like the biggest pressing issue here is that this is not meant to go to the moon and stay there. Instead I think the real motive is to make inflation. Look at it, it’s not meant to gain that amount of value, it’s meant to skew our perception of value. This way the current inflationary prices don’t look out of place when, in reality, everything is over valued. I guess it is also meant to make some people more complacent to inflation by giving them hope of “there being a chance” even though it clearly details how screwed over most of them will end up in the end compared to the house/dealer. Gambling is and will always be a big problem that adds more pressure to an otherwise unhealthy economy.





  • this is what I used to get, between 2-5 hours depending on how light to work and strict the power restrictions are. yes I wish to get the framework 16 with dGPU, I really need to save so much cash, so pricey. its the only laptop worth its cost though. so capable and I love the idea that I can baby it(with the usual repairs like battery and keyboard/trackpad) and the internals can be shelved or repurposed.

    my friend got one before me. Imagine how jealous I am and gushing in fanboy-ish enthusiasm.


  • I’m daily driving a laptop with i7 9750h and 1660ti. Unfortunately I had to convert it to desk only as battery is dead and removed, and touch pad seems to have also broke. Still CPU and GPU work fine. I still wonder if I will upgrade and if I can afford it ever anymore. I bought this laptop for 800 new. Idk, I want a framework just because of repairable nature but I would need to spend close to 2k to match the current 64GB RAM and 2TB of storage.



  • Oh! I didn’t think it that way, lol, I was thinking this quickly through. I didn’t think of relating to physical locks because it clearly said it was virtual. But I guess, there could theoretically be a physical tumbler lock with 0-5 spacers, it would just be a tall lock. You know like how some master keys have it so that there are spacers for the master key or the client key to open the lock.



  • Python3

    ah well this year ends with a simple ~12.5 ms solve and not too much of a brain teaser. Well at least I got around to solving all of the challenges.

    Code
    from os.path import dirname,realpath,join
    
    from collections.abc import Callable
    def profiler(method) -> Callable[..., any]:
        from time import perf_counter_ns
        def wrapper_method(*args: any, **kwargs: any) -> any:
            start_time = perf_counter_ns()
            ret = method(*args, **kwargs)
            stop_time = perf_counter_ns() - start_time
            time_len = min(9, ((len(str(stop_time))-1)//3)*3)
            time_conversion = {9: 'seconds', 6: 'milliseconds', 3: 'microseconds', 0: 'nanoseconds'}
            print(f"Method {method.__name__} took : {stop_time / (10**time_len)} {time_conversion[time_len]}")
            return ret
        return wrapper_method
    
    @profiler
    def solver(locks_and_keys_str: str) -> int:
        locks_list = []
        keys_list  = []
    
        for schematic in locks_and_keys_str.split('\n\n'):
            if schematic[0] == '#':
                locks_list.append(tuple([column.index('.') for column in zip(*schematic.split())]))
            else:
                keys_list.append(tuple([column.index('#') for column in zip(*schematic.split())]))
        
        count = 0
        for lock_configuration in locks_list:
            for key_configuration in keys_list:
                for i,l in enumerate(lock_configuration):
                    if l>key_configuration[i]:
                        # break on the first configuration that is invalid
                        break
                else:
                    # skipped when loop is broken
                    count += 1
        
        return count
    
    if __name__ == "__main__":
        BASE_DIR = dirname(realpath(__file__))
        with open(join(BASE_DIR, r'input'), 'r') as f:
            input_data = f.read().replace('\r', '').strip()
        result = solver(input_data)
        print("Day 25 final solve:", result)