Posts

Showing posts from November, 2024

Upward Diagonals Sudoku (UDS) - an NP Problem

Image
There are two types of Sudoku games: the standard one, and the Diagonal Sudoku. For the latter, it includes the standard rules plus the additional rule that the two main diagonals must also only contain unique numbers. I'd like to propose a third type: Upward Diagonals Sudoku, or UDS. In an UDS, the standard Sudoku rules apply, but we add one more rule: all the upward diagonals, all of them, must also only have unique numbers. The solution to this problem is again using Backtracking, but I liked to create a specific easy, scalable function to add new rules, which I highlight here . This way, if we want to add a different rule in the future, all we need is to craftly modify this function. This seems to be (arguably) an NP problem. When I asked for solutions using both Claude.ai and ChatGPT o1, they really struggle and can't really find a solution for me. It is interesting that eventually they give up and produce a code (without me asking for a code) that would arguably generate ...

1500 LeetCode Problems

Image
 Optimizing 'Adjacent Increasing Subarrays Detection II' with Pre-computation and Caching Solving algorithmic problems efficiently often hinges on smart strategies like pre-computation and caching. The LeetCode problem “Adjacent Increasing Subarrays Detection II” (https://leetcode.com/problems/adjacent-increasing-subarrays-detection-ii/) serves as a perfect example of how these techniques can be applied to achieve a linear-time solution. This post explores how to implement these strategies to solve the problem effectively. Understanding the Problem The challenge is to find the maximum length of a subarray that increases continuously, under specific conditions. The naive approach might involve nested loops, resulting in higher time complexity. The goal, however, is to process the array in linear time, avoiding unnecessary computations. Strategy Overview The key to optimizing the solution lies in: - Pre-computing the lengths of all increasing subarrays. - Caching these lengths to...

Classic Dijkstra II

Image
For this problem (and the #3342), all we need to do is apply classic Dijkstra, there is only one tiny adjustment for the "weight" based on the time, everything else is standard. Code is down below, cheers, ACC. Find Minimum Time to Reach Last Room I - LeetCode 3341. Find Minimum Time to Reach Last Room I Medium 46 12 Add to List Share There is a dungeon with  n x m  rooms arranged as a grid. You are given a 2D array  moveTime  of size  n x m , where  moveTime[i][j]  represents the  minimum  time in seconds when you can  start moving  to that room. You start from the room  (0, 0)  at time  t = 0  and can move to an  adjacent  room. Moving between adjacent rooms takes  exactly  one second. Return the  minimum  time to reach the room  (n - 1, m - 1) . Two rooms are  adjacent  if they share a common wall, either  horizontally  or  vertically .   Ex...

Claude vs ChatGPT: A Coder's Perspective on LLM Performance II

Image
Well, Claude does it again. Even against the powerful GPT 4o with Canvas, there is no match compared with the kids from Anthropic. Problem was this one:  Total Characters in String After Transformations I - LeetCode 3335. Total Characters in String After Transformations I Medium 83 4 Add to List Share You are given a string  s  and an integer  t , representing the number of  transformations  to perform. In one  transformation , every character in  s  is replaced according to the following rules: If the character is  'z' , replace it with the string  "ab" . Otherwise, replace it with the  next  character in the alphabet. For example,  'a'  is replaced with  'b' ,  'b'  is replaced with  'c' , and so on. Return the  length  of the resulting string after  exactly   t  transformations. Since the answer may be very large, return it  modulo   10 9  + 7 . ...