<p>We had some 2-dimensional coordinates, like <code>&quot;(1, 3)&quot;</code> or <code>&quot;(2, 0.5)&quot;</code>. Then, we removed all commas, decimal points, and spaces and ended up with the string s.</p>

<ul>
	<li>For example, <code>&quot;(1, 3)&quot;</code> becomes <code>s = &quot;(13)&quot;</code> and <code>&quot;(2, 0.5)&quot;</code> becomes <code>s = &quot;(205)&quot;</code>.</li>
</ul>

<p>Return <em>a list of strings representing all possibilities for what our original coordinates could have been</em>.</p>

<p>Our original representation never had extraneous zeroes, so we never started with numbers like <code>&quot;00&quot;</code>, <code>&quot;0.0&quot;</code>, <code>&quot;0.00&quot;</code>, <code>&quot;1.0&quot;</code>, <code>&quot;001&quot;</code>, <code>&quot;00.01&quot;</code>, or any other number that can be represented with fewer digits. Also, a decimal point within a number never occurs without at least one digit occurring before it, so we never started with numbers like <code>&quot;.1&quot;</code>.</p>

<p>The final answer list can be returned in any order. All coordinates in the final answer have exactly one space between them (occurring after the comma.)</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;(123)&quot;
<strong>Output:</strong> [&quot;(1, 2.3)&quot;,&quot;(1, 23)&quot;,&quot;(1.2, 3)&quot;,&quot;(12, 3)&quot;]
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;(0123)&quot;
<strong>Output:</strong> [&quot;(0, 1.23)&quot;,&quot;(0, 12.3)&quot;,&quot;(0, 123)&quot;,&quot;(0.1, 2.3)&quot;,&quot;(0.1, 23)&quot;,&quot;(0.12, 3)&quot;]
<strong>Explanation:</strong> 0.0, 00, 0001 or 00.01 are not allowed.
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;(00011)&quot;
<strong>Output:</strong> [&quot;(0, 0.011)&quot;,&quot;(0.001, 1)&quot;]
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>4 &lt;= s.length &lt;= 12</code></li>
	<li><code>s[0] == &#39;(&#39;</code> and <code>s[s.length - 1] == &#39;)&#39;</code>.</li>
	<li>The rest of <code>s</code> are digits.</li>
</ul>

from decimal import Decimal
class Solution:
    def ambiguousCoordinates(self, s: str) -> List[str]:
        s=s[1:-1]
        l=[]
        def addPoints(k):
            l=len(k)
            r=[]
            if l==1:
                return [k]
            else:
                for i in range(1,l):
                    r.append(k[:i]+"."+k[i:])
            r.append(k)
            return r
            
        def is_irrelevant(num_str):
            # Updated regex pattern to filter irrelevant number formats
            pattern = r'^(0{2,}(\.0*)?$|0+\.\d+0+$|\d+\.\d*0+$|0+\d+|^\d*\.0+$)'
            # Check if the string matches the pattern
            return bool(re.match(pattern, num_str))
        
        for i in range(1,len(s)):
            l.append((s[:i],s[i:]))
            
        def merge(a,b):
            r=[]
            for i in a:
                for j in b:
                    if is_irrelevant(i)==False and is_irrelevant(j)==False:
                        x_float = Decimal(i)
                        y_float=Decimal(j)

                        # Check if the float value is an integer
                        if x_float == int(x_float):
                            x_float=int(x_float)  
                        else:
                            x_float=f"{x_float:.10f}".rstrip('0').rstrip('.')
                        if y_float == int(y_float):
                            y_float=int(y_float)
                        else:
                            y_float=f"{y_float:.10f}".rstrip('0').rstrip('.')
                            
                        r.append((x_float,y_float))
            return r
        final=[]
        for i in l:
            a=addPoints(i[0])
            b=addPoints(i[1])
            final=final+merge(a,b)

        for i in range(len(final)):
            final[i]=f'({final[i][0]}, {final[i][1]})'

                
        return final
16800