HackerLangs
TopNewTrendsCommentsPastAskShowJobs

tromp

11,121 karmajoined 13 anni fa
tromp.at.hn

Homepage https://tromp.github.io/

Submissions

The PocketMage E Ink digital assistant

engadget.com
1 points·by tromp·19 ore fa·0 comments

Donut Lab's Manufacturing Is Different

cleantechnica.com
4 points·by tromp·mese scorso·0 comments

'Finding Satoshi' Makes the Case for Hal Finney, Len Sassaman as BTC Co-Creators

decrypt.co
2 points·by tromp·3 mesi fa·2 comments

Robot sprints to victory in Beijing, beating the half-marathon world record

apnews.com
16 points·by tromp·3 mesi fa·0 comments

Donut Lab's solid-state battery could barely hold a charge after getting damaged

theverge.com
1 points·by tromp·4 mesi fa·1 comments

[untitled]

1 points·by tromp·4 mesi fa·0 comments

EVs Coming in 2026

wired.com
1 points·by tromp·5 mesi fa·1 comments

[untitled]

33 points·by tromp·5 mesi fa·0 comments

The largest number representable in 64 bits

tromp.github.io
121 points·by tromp·5 mesi fa·85 comments

Chinese Tennis Playing Robot

supercarblondie.com
1 points·by tromp·6 mesi fa·0 comments

Ukraine survives another crisis with Donald Trump

economist.com
6 points·by tromp·8 mesi fa·6 comments

XPeng Gears Up to Launch Robotaxis Next Year

wsj.com
1 points·by tromp·8 mesi fa·1 comments

I rode in Xpeng's $20,000 Tesla FSD competitor

electrek.co
3 points·by tromp·8 mesi fa·1 comments

Sodium batteries are finally catching up

sciencedaily.com
27 points·by tromp·9 mesi fa·12 comments

The EPA Hasn't Released a Toxicity Report on this Forever Chemical

propublica.org
23 points·by tromp·9 mesi fa·0 comments

How the United States is eating Trump's tariffs

reuters.com
18 points·by tromp·9 mesi fa·3 comments

comments

tromp
·11 ore fa·discuss
It can be solved if the memory is bounded. But unbounded memory comes with undecidable problems.
tromp
·15 giorni fa·discuss
This is like Proof-of-Work, but for an extremely small amount of work, that would already overwhelm human effort, like computing a single SHA256.
tromp
·16 giorni fa·discuss
Every single cryptocurrency (except one or two) concentrates wealth on the founders and early adopters.
tromp
·18 giorni fa·discuss
> In France, Germany, Austria, Switzerland, the Low Countries, Ireland and Scandinavia, however

What are the Low Countries? Is that a mis-translation of the Netherlands?
tromp
·24 giorni fa·discuss
Meanwhile, a single human cell's DNA stretches for about 2 meter, one human's DNA stretches for about 2 x 5.4 trillion meter, and all living human DNA for a whopping 8.6 x 10^22 meters, nearly a thousand times longer than the fungi networks...

[1] https://www.reddit.com/r/theydidthemath/comments/1gfq6k2/how...
tromp
·24 giorni fa·discuss
Shor doesn't solve an NP hard problem. It's even possible that factoring and discrete log are in P, while P != NP.

The paper builds on the results of "Nonlinear quantum mechanics implies polynomial-time solution for NP-complete and #P problems" by Abrams and Loyd [1], from which I quote:

> The last qubit now contains all the information that we need; however, for small s, a measurement of the last qubit will almost always return |0>, yielding no information. > We wish to distinguish between the cases s=0 and s>0.

> Step 4. Repeatedly apply the nonlinear operation to drive the states representing these two cases apart at an exponential rate: eventually, at a time determined by a polynomial function of the number of qubits n, the number of solutions s, and the rate of spreading (Lyapunov exponent) λ, the two cases will become macroscopically distinguishable.

[1] https://arxiv.org/abs/quant-ph/9801041
tromp
·mese scorso·discuss
I think Oppo is the first to visibly eliminate the crease with their Find N6.

https://www.pcmag.com/news/i-tried-oppos-latest-foldable-pho...
tromp
·mese scorso·discuss
One of the main instruments of obfuscation (and the way to get more out of the size constraints) is making the code as short as possible, so in that example you'd prefer

    if (!(x/2-1)) { ...
EDIT: Oops, confused the original with x==2 || x==3. Instead, we can use !(x-1>>1), which precedence rules parse as !((x-1)>>1).
tromp
·2 mesi fa·discuss
And how diamonds are grown: https://en.wikipedia.org/wiki/Synthetic_diamond
tromp
·2 mesi fa·discuss
https://archive.is/SafF7
tromp
·2 mesi fa·discuss
https://en.wikipedia.org/wiki/Capture_the_flag_(cybersecurit...

still has no mention of AI, but that will likely change as they increasingly dominate competition.
tromp
·2 mesi fa·discuss
The author presents most known numeral systems (ways of representing natural numbers) in lambda calculus, classified by whether the term use their bound variables exactly one time (linear), at most one time (affine), or multiple times (non-linear). Mackie's paper [0] (one of the references) provides a good introduction to these. (although he strangely gets the definition of Church numerals wrong with "Church numerals encode numbers with repeated application: λx f. f^n x." in which he reversed the order of arguments f and x).

He illustrates some numerals in each system with a graphical notation that strongly reminds me of interaction nets [1], a computational model closely related to lambda calculus. The notation they use for lambda terms is rather non-standard. Compare

> In β-reduction, k[(x⇒b)←a]⊳k[b{a/x}]k[(x⇒b)←a]⊳k[b{a/x}]

with Wikipedia's [2]

> The β-reduction rule states that a β-redex, an application of the form (λx. t) s, reduces to the term t[x:=s].

The k[...] part means that β-reduction steps can happen in arbitrary contexts.

[0] https://www.researchgate.net/publication/323000057_Linear_Nu...

[1] https://en.wikipedia.org/wiki/Interaction_nets

[2] https://en.wikipedia.org/wiki/Lambda_calculus
tromp
·2 mesi fa·discuss
> The task is to place four black queens and one black bishop on the chessboard so that there is no square not under their attack. In other words, after arranging the five black pieces, it must be impossible to place the white king anywhere without it being in checkmate.

That last word should be "check". not "checkmate". A king next to an unprotected queen will be in check but not checkmate as it can capture the queen.
tromp
·2 mesi fa·discuss
> fly two to three times faster (about 460 miles per hour, compared to 90 miles per hour)

Is this AI math? That's over 5 times faster.
tromp
·2 mesi fa·discuss
> Next Friday always means the Friday after the next one

You're using "the next one" i.e. the next Friday, to refer to the first one after today.
tromp
·2 mesi fa·discuss
Except on Friday's, when "this Friday" means today. On other days, many people indeed use "this" and "next" synonymously.
tromp
·2 mesi fa·discuss
> The Simple Rule

> If the Friday you’re referring to is beyond seven days from today, including today, it’s next Friday.

That's not a such simple rule. I'm not even sure what "including today" means.

A simple rule would be: next Friday is the first Friday after today.

The whole existence of this website suggests that the term "Next Friday" is at best ambiguous. Especially on a Saturday or Sunday, many people will interpret "Next Friday" as the Friday of next week. So just be explicit and say "Friday next week".
tromp
·2 mesi fa·discuss
One of the smallest implementations is my heavily obfuscated https://www.ioccc.org/2012/tromp/ :

           Int L[A],m,b,*D=A,
            *c,*a=L,C,*U=L,u;s
             (_){u--&&s(a=*a);}
              char*B,I,O;S(){b=b
               --?b:m|read(0,&I,1
                )-1;return~I>>b&1;
                 }k(l,u){for(;l<=u;
                  U-L<A?*U++=46^l++[
                   "-,&,,/.--/,:-,'/"
                   ".-,-,,/.-,*,//..,"
                  ]:exit(5));}p(Int*m){
                 return!*U?*m=S()?U++,!S
                ()?m[1]=p(++U),2:3:1,p(U)
               :S()?U+=2:p(U[1]++),U-m;}x(
              c){k(7*!b,9);*U++=b&&S();c&&x
             (b);}d(Int*l){--l[1]||d(l[d(*l),
            *l=B,B=l,2]);}main(e){for(k(10,33
           ),a[4]-=m=e-2&7,a[23]=p(U),b=0;;e-2
          ?e?e-3?s(D=a),C=a  [3],++1[a=a[2]],d(
         D):c?D=c,c=*D,*D=    a,a=D:exit(L[C+1])
        :C--<23?C=u+m&1?O      =O+O|C&1,9:write(m
       ||(O=C+28),&O,1)+        1:(S(),x(0<b++?k(0,
      6),U[-5]=96:0)):(          D=B?B:calloc(4,X))
     ?B=*D,*D=c,c=D,D[            2]=a,a[++D[1]]++,D
    [3]=++C+u:exit(6)              )e=L[C++],u=L[C];}
while a less obfuscated and highly performant implementation https://github.com/tromp/AIT/blob/master/uni.c based on combinatory graph reduction takes 446 lines.
tromp
·2 mesi fa·discuss
> Alonzo Church developed the lambda calculus in 1929.

His first publication that showed the elements of the lambda calculus was the 1932 paper "A set of postulates for the foundation of logic", as I cited in my recent paper [1]. It's quite possible he worked on it prior to 1932, but I don't know of any credible evidence on that (would be very interested to learn about any).

> Wait! How the heck is this a "programming" language? > At first glance, this simple language seems to lack both recursion and iteration, not to mention numbers, booleans, conditionals, data structures and all the rest. How can this language possibly be general-purpose?

What most stops lambda calculus from being a programming language is that it doesn't directly support I/O. However, one can adopt some very simple conventions for representing bits, lists of bits (bytes), and lists of bytes, and for letting a lambda term operate on these [2] which make the so-called Binary Lambda Calculus (BLC) a programming language.

And a very expressive language it is too: a BLC self interpreter [4] can be as small as the 170-bits

    01000110100001000
    00001100000010111
    00110000111111100
    00101110011111110
    00000111100000010
    11101110011011110
    01111111100001111
    11110000101111010
    01110100101111101
    00101101010011010

 which encodes the term

    (λ11)(λ(λλλ1(λλ2(1(λ6(λ2(6(λλ3(λλ23(14))))(7(λ7(λ31(21)))))))(41(111))))(11))
in De Bruijn notatation, with lambda diagram [3]

    ┬─┬ ────────────────────────────────────────────┬─┬
    └─┤ ──────┬───────────────┬──────────────────── ├─┘
      │ ──────┼───┬───────────┼─┬─────────┬──────── │
      │ ┬─────┼───┼───────────┼─┼─────────┼──────── │
      │ │ ┬───┼───┼───────────┼─┼─────────┼──────── │
      │ │ ┼─┬─┼───┼───────────┼─┼─────────┼─┬─┬─┬─┬ │
      │ │ │ │ ┼─┬─┼───────────┼─┼──────── └─┤ └─┤ │ │
      │ │ │ │ │ ┼─┼─┬─────────┼─┼─┬──────   │   ├─┘ │
      │ │ │ │ │ │ │ ┼───────┬ │ ┼─┼───┬──   ├───┘   │
      │ │ │ │ │ │ │ ┼───┬───┼ │ │ ┼─┬─┼─┬   │       │
      │ │ │ │ │ │ │ │ ┬─┼───┼ │ │ └─┤ ├─┘   │       │
      │ │ │ │ │ │ │ │ ┼─┼─┬─┼ │ │   ├─┘     │       │
      │ │ │ │ │ │ │ │ └─┤ ├─┘ │ ├───┘       │       │
      │ │ │ │ │ │ │ │   ├─┘   ├─┘           │       │
      │ │ │ │ │ │ │ ├───┘     │             │       │
      │ │ │ │ │ │ ├─┘         │             │       │
      │ │ │ │ │ └─┤           │             │       │
      │ │ │ │ │   ├───────────┘             │       │
      │ │ │ │ ├───┘                         │       │
      │ │ │ ├─┘                             │       │
      │ │ └─┤                               │       │
      │ │   ├───────────────────────────────┘       │
      │ └───┤                                       │
      │     ├───────────────────────────────────────┘
      └─────┘
10 times smaller than the 7 lines of R5RS Scheme

    (define (eval e env) (cond
      ((symbol? e)       (cadr (assq e env)))
      ((eq? (car e) 'λ)  (cons e env))
      (else              (apply (eval (car e) env) (eval (cadr e) env)))))
    (define (apply f x)
      (eval (cddr (car f)) (cons (list (cadr (car f)) x) (cdr f))))
    (display (eval (read) '())) (newline)
> This code will read a program from stdin, parse it, evaluate it and print the result.

Except that it leaves all the actual parsing to the "read" library function.

In contrast, the BLC code does all parsing itself. One of the neatest tricks is how it represents the environment as a list built with

      cons' =  \x\y\zx\zy. zx x (zy y)
which allows a list of bits like "1110" (the code for de Bruijn index 3) to index the environment by simply applying it to the environment.

[1] https://www.mdpi.com/1099-4300/28/5/494 "The Largest Number Representable in 64 Bits"

[2] https://gist.github.com/tromp/86b3184f852f65bfb814e3ab0987d8...

[3] https://tromp.github.io/cl/diagrams.html

[4] https://github.com/tromp/AIT/blob/master/ait/int.lam
tromp
·2 mesi fa·discuss
The build process: https://www.youtube.com/watch?v=HzI2GgTZAfE