« first day (1651 days earlier)      last day (996 days later) » 

12:01 AM
In the intro to Learning APL, the author specifically mentions this chat room. It makes me wonder if they might be in here right now..
 
It is xpqz, but it is 1 AM for him...
 
very cool
Also, I am already aware that you work for Dyalog, thanks to a meta post a while back asking if anyone gets paid to golf.
 
The person updating Mastering Dyalog APL, RGS, is also here quite frequently.
Yeah, you'll find a few Dyalog people here on occasion. RikedyP does a lot of media things. MortenKromberg is the CTO. Brian is the APL Tools Architect. JohnDaintree is Chief Architect.
Sometimes MBaas stops by. He's in the Tools Group like me.
 
 
2 hours later…
1:54 AM
@chunes i recommend using Adám's right Alt keyboard layout github.com/abrudz/Kbd, lets you use any combos without needing extra configuration
 
 
6 hours later…
8:15 AM
@chunes I am here occasionally, yes.
@chunes If you read Learning APL, I'd be very interested to hear any feedback you might have.
 
@xpqz I've now graded Phase 1. Do you want to see the best for a potential blog post?
 
Wow, you don't hang around.
@Adám but sure, I'm up for it,
 
The APL Orchard Theorem: Anyone who are active on CG.SE for some while eventually gets to drop by The APL Orchard and learn APL
 
8:43 AM
What is cg.se?
 
Oh, I see. :-)
 
Nothing to do with Sweden. Should really be written as codegolf.SE or CG.SE or so.
 
 
1 hour later…
9:48 AM
just received phase I notification :)
 
Congratulations!
 
9:59 AM
I cannot wait to see better solutions on Fischer Chess and Long Run
 
@xpqz Your book is great! Written in a really approachable way
 
10:33 AM
CMC: Given an non-negative integer, produce a vector of that many empty numeric vectors.
 
@Adám ⍸
 
Yup.
 
Because I ran into it while fiddling with the box challenge :P
 
CMC: A monadic operator taking a dyadic 3-train (f g h) and deriving a dyadic function equivalent to (f⍤⊣ g h⍤⊢)
 
@Adám what's the expected size?
 
10:47 AM
Size?
 
in bytes
 
Oh, I don't know. It is theoretically possible, but probably hard.
It'd be nice if there was a way to define a tacit function from its nested representation.
 
@Adám BQN, 30 29
 
@dzaima Nice. 27 with F⊸G⟜H
 
@Adám ah right :|
 
10:51 AM
While some BQN glyph choices bother me, my heart still aches when I see how good BQN is.
 
      a←+××⋄j←{a←⍺⍺⋄f g h←⎕NR'a'⋄⍺(⍎'('f,')⍤⊣',g'('h,')⍤⊢')⍵}⋄5 a j 4
5
47 bytes
 
Only works on fairly simple trains though.
 
what would be a good testcase
 
5 (-↑(⊢×))j ¯3
 
0 0 0 0 ¯1 is what it gives
 
11:01 AM
Then you've amended something.
 
amended?
i only saved a byte afaik
 
You added to the right of ?
j←{a←⍺⍺⋄f g h←⎕NR'a'⋄⍺(⍎∊'('f')⍤⊣'g'('h')⍤⊢')⍵}
 
yep
 
But this still fails on some cases.
 
i guess it would
I just saw that ⎕NR gave 3-trains as a vector and used that
 
11:03 AM
The problem is that more complex tacit functions end up deeply nested.
 
yep, just checked that
 
E.g. 5 (-↑(⊢×(--)))j ¯3 fails with 0 0 0 0 ¯4 instead of the correct 0 0 0 0 9
 
convertign that to a string is a ton of bytes
 
Yes.
And not only that. It is quite impossible to do so only using the info from ⎕NR.
 
cause tradfns can be put in trains?
 
11:06 AM
No, that'd be fine. Because
      f←'+',⊢
      g←+,⊢
      'f'≡⍥⎕NR'g'
1
 
oh that is scary
 
Well, that's why we now have "⎕XR":
      ∆XR←183⌶
      'f'≡⍥∆XR'g'
0
      'f',⍥⊂⍥∆XR'g'
┌─────┬─────┐
│2 3 3│3 3 3│
└─────┴─────┘
 
XR's not on APLcart, 183⌶ shows up
 
Doesn't that mean XR is on APLcart?
 
well not under the saem name lol
 
11:10 AM
Hence my scare quotes.
Heh:
> How should I trap exceptions in shakti / k9?
Arthur Whitney's reply:
> can't do it.
> production apps have no exceptions
 
is that from the mailing list?
lmao
 
Yes.
 
brb writing a K with error guards
 
You can't even output to stderr. (Who needs status messages anyway‽)
 
@Adám tbf, no error catching simplifies implementation a lot and it's very much possible to pass errors manually as return values when you need to
 
11:15 AM
Sure, but I don't think Shakti K can pass errors either. It just quits on error.
 
(and k barely even ever throws exceptions)
 
It has length errors.
 
@Adám I meant as returning (1 returnvalue) or (0 'error message') or something
@Adám does it? doesn't it just return 0N on oob or whatever?
 
w2021.03.27 1gb firefox (c)shakti 2.0
 1 2 3+4 5
1 2 3+4 5
^
!length
 
@Adám ah. But there's no recovering from a coding mistake like that
 
11:17 AM
It could be data read in from a file…
 
@Adám well then someone didn't do their job of verifying inputs
 
Sure. I suppose verifying everything is good practice, but what if a file disappears between you checking if it exists, and actually reading it?
 
file lock needed
 
@Adám well then something's gone seriously wrong
 
I doubt K has that.
 
11:19 AM
{⍉(⌽⍺)⍴⍉(⍺,⍥⊃⌽⍴⍵)⍴⍵}
 
What is that?
 
tiling a 2d array ⍵ over size specified by ⍺
 
ooh, nice.
 
Is there an alternative in APLcart?
 
I don't think so. Can I add yours?
 
11:21 AM
sure
this is usually for digital halftoning
 
Tacit version: (⍉⌽⍤⊣⍴∘⍉,⍥⊃∘⌽∘⍴⍴⊢)
 
shorter - {⍺⍴(⊃⌽⍺)⍴⍤1⊢⍵}
 
@dzaima ⊣⍴⊢/⍤⊣⍴⍤1⊢
 
oh, yes, can receive rank argument
 
@LdBeth No, Rank can receive any operand!
 
11:31 AM
@chrispsn Thanks! Means a lot to hear.
 
@Adám so to dfns?
 
@LdBeth What?
 
Can Rank also modify user defined ones?
 
Yes, or rather, Rank can also take user defined functions.
 
doesn't do anything "special". You could implement it yourself even
it can take dfns as operands just as much as ¨ can
 
11:44 AM
The ordinariness of is what makes it so much better than bracket axis.
 
the original approach I took was something like (,⍺)[(x y⍴y⍴⍳b)+⍉y x⍴x⍴b×⍳a], but I switched to in hope that it would optimize the size of the array
actually the naive one I used is generate the index by , which can cause WS FULL very easily
 
12:24 PM
@Adám any chance of knowing my score?
 
@rak1507 Hm, I was grading anonymous data.
 
are we allowed to post our solutions now? I can un-private my GH repo and then you could see?
 
Of course.
 
@rak1507 Your P7 doesn't solve the problem.
 
12:31 PM
It is very different from mine :)
 
@Adám it passes all test cases
 
@rak1507 But it fails on 3 3⍴213411984600622500 501196728097200100 2307987025395014601 91445717664004900 2512862530611612201 418287489817220100 2717738035828209801 8536479384024900 296321222880602500
@rak1507 You could fix it by changing the leftmost to :
      a
 213411984600622500  501196728097200100 2307987025395014601
  91445717664004900 2512862530611612201  418287489817220100
2717738035828209801    8536479384024900  296321222880602500
      +/a
3022595738092837201 3022595738092837201 3022595738092837201
      +⌿a
3022595738092837201 3022595738092837201 3022595738092837201
      +⌿1 1⍉a
3022595738092837201
      +⌿1 1⍉⌽a   ⍝ note that this sum is different from the above sums
7538587591834836603
      P7←∧/2=/⊢,⍥(+⌿⊢,1 1⍉⊢)⍉
      P7 a
1
      P7f←∧/2=/⌽,⍥(+⌿⊢,1 1⍉⊢)⍉
 
oh, that's annoying, I miss the right to left diagonal
 
Indeed. Passing the test cases isn't enough. You have to solve the problem too :-)
 
tbh it's a shame that there are some test cases that aren't included, I thought after last year's P10 that wouldn't happen again
 
12:38 PM
Hopefully, it won't happen next year.
 
lesson learned :(
@LdBeth have you published your solutions?
 
@rak1507 For us!
 
@Adám well, for me too, now I know passing test cases ≠ solving it
 
@rak1507 Would you still like your score?
 
12:39 PM
yeah
 
You got 88% of the maximum attainable score.
 
what was top 10?
 
I'm one of the 10 :)
 
@rak1507 99%–97%.
 
@LdBeth did you find out your score?
 
12:41 PM
Interesting tha tP8 must have changed from the version I got to 'beta test' to the one that made it to the comp.
 
@Adám wow, so I dropped a lot, how come? aside from that one I thought the rest were ok
 
@rak1507 not it is not mentioned in the letter
 
@LdBeth Do you want it?
 
@Adám sure!
 
@rak1507 Yes, you got 97% of the attainable score if P7 is discounted.
 
12:43 PM
crap! most expensive 1 character mistake ever
 
@LdBeth 98% of the maximum attainable.
@rak1507 Yeah. I kind of feel bad about P7.
 
it's so frustrating if I'd just done (⊢,⍥(⊢,1 1⍉⊢)⍉) 5 5 ⍴ ⍳25 and looked closer I would've realised
 
Did't realise you actually mark P1 -- I thought it's just a gate to get through to reach P2, and if it submits, it's done.
 
yeah there's a phase 1 prize
 
We had 78 test cases for P7, and still missed the above one.
 
12:46 PM
is the test case random based?
 
:(
 
@LdBeth Most (if not all) problems use some random tests in addition to static ones.
@rak1507 Because of this, we're going to have thorough peer review of the test cases for next year.
(Next year's competition problems are almost ready…)
@rak1507 Exactly. Which makes me feel a little less bad. It wasn't unreasonable to expect participants to actually, you know, reason about their solutions.
 
in tablets the tryapl.org sometimes gets bugged
 
Related: APL Wiki has an Advent of Code article with links to solutions. Maybe we should start adding links to competition solutions from its article too?
@PyGamer0 In what way?
 
@Adám the top bar with the apl glyphs sometimes gets cut
in the sense that i cant enter the glyphs on the bottom line of the bar
 
12:51 PM
Do you know when it happens? Maybe when the tablet is rotated?
 
also the page is sightly long for android
 
@LdBeth @rak1507 Are you OK with linking to your repos from the wiki?
 
i have to scroll to see the bottom input bar
 
@Adám no problem
 
@PyGamer0 That's odd. Sounds like the browser is not reporting the viewport size correctly.
 
12:55 PM
Ill upload my solutions now
 
Feel free to add to the wiki.
 
@Adám sure
@Adám yeah I can't entirely blame dyalog for it but I also can't help feeling very frustrated that if not for the lack of test cases I would've probably won a prize
I took my P7 almost directly from a project euler problem that involved that but changed it slightly without properly checking
 
^ that
 
@PyGamer0 yeah, it is clearly getting the wrong height, upon which it computes the UI hight and the language bar height. What happens if you rotate the tablet, and rotate it back again?
 
^ sometimes that happens
@Adám nothing
 
1:04 PM
@PyGamer0 Yikes. Does reloading the page do anything?
 
@Adám reloading fixes that bar
 
@PyGamer0 Hm, when it originally loaded on my tablet, it was indeed too tall, but rotating it back and forth fixed it. Seems to be a delay in updating the metrics.
@PyGamer0 OK, I can repro that.
I'm not so happy with the way the TryAPL frontend works. It relies on JS to resize things instead of letting HTML/CSS organically adjust stuff.
 
Yep I agree - also I've recently seen some forum post claiming split.js which is uses doesn't handle mobile layours well / at all
We'll have to dedicate some time to it at some point - but on the other hand, it's open source now so if there's any sufficiently motivated individuals you can do it sooner rather than wait
 
@Adám added
 
@Adám is the task sheet for P1 still available?
 
1:17 PM
@xpqz Yes, the site stays up all year.
 
CMC: given a vector of positive integers, for example 2 3 4, return a boolean vector where the gaps between 1s are equal to that, so 1 0 1 0 0 1 0 0 0
 
∊↑∘1¨?
 
there's shorter
 
1,2</⍸ is probably faster.
It is the inverse of ≢¨⊂⍨.
 
@Adám yep it is faster than mine by a bit
4 chars longer though
 
1:33 PM
I can think of ≠(/⍨)
oh wait, ≠⍸
that's it
 
@Razetime ≠⍤/⍨
 
≠⍸ is the one
 
Yes, of course.
 
yep
 
That's actually very nice for splitting into lengths.
 
1:36 PM
ok, there's no monadic = yet
 
≠⍸ converts from partitions per item to items per partition
 
Except it can't handle 0s.
 
yeah
 
i still dont understand what ⍨ does
 
@PyGamer0 It does 4 things (X and Y and C are arrays, and f is a function):
f⍨ A ←→ A f A
A f⍨ B ←→ B f A
A⍨ B ←→ A
A(B⍨)C ←→ B
 
1:53 PM
so 1st one is repeat the right argument as the left argument of the function
second is reverse the right and left arguments
i dont get the 3rd and 4th
 
It creates a constant function. Almost the same as {A} and {B} respectively.
 
ok so +¨⍨ f f f (where f is f ← 1 2) means for each f add it to itself?
 
it is ((1 2) (1 2) (1 2)) +¨ ((1 2) (1 2) (1 2))
 
@PyGamer0 Yes, although for the specific function +, ¨ does nothing.
 
@Adám oh
does ¨ also loop over the elements of a vector?
 
2:03 PM
Also?
 
does it over load?
 
¨ is very simple. Either the arguments must have the same shape, and it pairs up corresponding elements, or one argument must be a scalar, and it distributes that scalar to all elements of the other argument.
Overloading isn't really meaningful in APL, as all data lives in arrays.
 
2:30 PM
It is not good for parallelism, but instead for sequential processing most of the time, to replace in other languages would be loop statements for example.
 
@LdBeth Correct. You might want to look at too, which is good for parallelism.
 
 
2 hours later…
4:31 PM
@Adám is the scoring for this year the same as for last year? 2 for gold, -1% for suboptimal, and +0.5% for particularly good?
 
@rak1507 -0.1 for suboptimal, -0.2 for real issues (like failing additional special cases or having particularly bad APL style), +0.1 for being particularly good (e.g. nice insights).
 
@Adám can you get -0.1 and -0.2 for the same question?
 
No, maximum penalty is -0.2.
 
right, so for P7 I just got 0? not 1.8?
 
Correct.
 
4:40 PM
but last year, for P10, people didn't get 0 if they didn't pass for 'ab'?
 
@rak1507 Wasn't it 1'a'? Anyway, no, because it was considered an edge case, while not checking one of the diagonals simply doesn't fully apply the definition of a magic square.
 
@Adám how is it an edge case? The function must return a simple character array that displays identically to what {⎕←⍵}¨ displays when applied to the right argument. Some solutions simply did not do that, and got marks for it
 
@rak1507 Correct, but it was a very special edge case where the issue was some interference due to data types.
 
Ok, so 2 for gold, unless you fail a hidden test case that both isn't considered important enough to be part of the main ones while simultaneously being important enough to completely invalidate your entire solution?
 
5:08 PM
@rak1507 No, 2 for gold unless you didn't actually implement the basic algorithm (not because you missed an edge case), but happened to still give the right answer to the used test cases. The issue last year was not realising that the data type could affect a shape (something that's very unusual for APL).
 
@Adám chat.stackexchange.com/transcript/message/55146496#55146496 here you mentioned 'ab', and I'm not sure what you mean by 'the data type could affect a shape'
 
@rak1507 OK, then 'ab'. I think it had something to do with giving a vector for 1 but a scalar for 'a'.
 
The specification of P10 last year was that it should produce {⎕←⍵}¨, the specification of P7 this year is it should correctly detect magic squares. Why is failing one of them fine, but the other not?
 
@rak1507 I just explained it. The basic algorithm back then was sound, but failed on a very special case due to what could be considered a quirk in the language. However, this year, we had solutions that truly didn't detect the magicness of a square at all, only looking at some insufficient characteristics which happened to identify all the given test cases that were also magic squares.
Compare to writing a prime number detector as 2∘| when the only test cases given are in the range [3,8]
 
If it doesn't work, how can it be sound? Does this mean in future we're free to just ignore the problem description and submit something that solves an entirely different problem, as long as 'the algorithm is sound'? If something passes all provided test cases but isn't actually valid, that's a failure of the test cases not of the solution, especially considering last year's P10. It's very reasonable for someone to assume that a solution that passes all test cases is a valid solution
In any competitive programming contest, all that matters is getting the right answer, normally within a time and memory limit. It doesn't matter how sound your algorithm is, what you hardcode, whatever. I get that Dyalog like to do things differently to everyone else, and for Phase 2 the onus is on the participant, but for Phase 1 I do think that if something passes the test cases almost by definition it is a valid answer.
 
5:20 PM
@rak1507 No, that's exactly my point. You're not free to to ignore the description, even if you pass the test cases. The automated system only ever claims that you passed the test cases, not that you solved the problem.
 
@Adám But you're free to ignore it for P10 of last year?
 
@rak1507 We're pretty explicit about judging your code.
 
Doesn't matter if your solution does actually produce the result of {⎕←⍵}¨, you just get deducted -0.2.
 
@rak1507 No, if you "ignored it" last year, you got a minor penalty.
 
Why are there minor penalties for some things but major penalties for others?
 
5:21 PM
I just told you.
 
It's not as if someone just submitted {1-⍨?2} and hoped for the best. It was a minor error that would have been caught and corrected if not for the lack of test cases.
 
I'd say that when the ask is to check the rows, the columns, the diagonal, and the anti-diagonal, and you simply don't check the anti-diagonal, then it isn't a minor error.
 
And I'd say when the ask is to produce {⎕←⍵}¨ and you don't do that, that's not very minor either.
 
5:34 PM
It is hard to compare a transformation problem to a decision problem, but there, solutions did in fact do the task, for almost all cases, while here we're talking about solutions that never checked the necessary requirements, not just for an unusual case, but for any case.
The situation is of course most unfortunate, but what do you propose we do?
 
Mark it 1.8 like last year
 
eh, i'd say missing the antidiagonal is much worse of an offence than not being able to decipher how to even {⎕←⍵}¨
(not 100% of points worse, but worse nonetheless)
 
Maybe with no automated test cases, but I'd expect that sort of thing to be picked up more than niche edge cases with {⎕←⍵}¨
 
@rak1507 Btw, I just recomputed everything with 1.8 instead of 0, and you would score 96% and end up with 13 entrants scoring better than you.
 
⋄ 20 ÷⍨ 1.8 + .88 × 20
 
5:40 PM
@rak1507 0.97
 
@Adám good to know anyway
 
interesting excerpt from the contest page: "Phase 1 will mainly be judged based on: does your function handle the given edge-cases?"
 
@rak1507 It doesn't work like that.
 
oh
how does it work?
 
@rak1507 If you get 2 on every problem, and every solution is outstanding, you get 2.1, so the maximum attainable score is 21. You had 6×+0.1 and 2×-0.1, and then the problematic P7.
 
5:46 PM
Ah
-0.1 on P3 and P9 presumably?
 
@rak1507 Almost. I didn't give you a bonus on P9, but no penalty either. I gave you a penalty on P1 – for doing code golf.
 
fair enough :(
 
I had to come up with lots of additional criteria this year, since there were so many all-correct submissions, and for problems 1 and 2, many had identical code.
 
what's even in P1 to golf
oh wow rak's solution is fancy
 
it does divide the boolean array by the length so maybe floating point could interfere with longer things
it'll be slower too
 
6:09 PM
Exactly, and furthermore, it isn't so clear to the reader. Dividing the Boolean with the length isn't a very meaningful by itself.
100×≢÷⍨1⊥∊∘'CG' is marginally longer, but does "the right thing".
 
yea you can see here github.com/rak1507/Various-APL-Stuff/blob/… I actually had that solution in my list but submitted the shorter one
(as well as the correct P7←{1≡≢∪+/↑(⊢,⍥(↓,⍥⊆1 1∘⍉)⌽)⍵} :( )
wait that's not even right either lol
 
6:27 PM
Maybe we should put in an explicit warning that it isn't code golf?
 
maybe, it's clear that golfing won't gain points but I didn't think it would lose any either, so might be worth putting that in
 
6:42 PM
meanwhile, i just did the phase i problems lol. curious about ppls' p9 (phase 1) solutions, my one is {⌈/1+0,+/¨b⊆b←2=/2,2(×-)/⍵}.
 
7:01 PM
@rak1507 I don't mind short, but when short leads to the issues we mentioned above…
 
yeah, makes sense
 
In fact, for P4, I rewarded short solutions.
@11Kilobytes b⊆b← is ⊆⍨
My favourite P9 was {⌈/¯2-/0,⍸1,⍨2≠/×2-/⍵}
 
@Adám rather than using a ⊂⍨/⊆⍨?
 
@Adám my {⌈/2-⍨/⍸1,⍨1,2≠/×2-/⍵} is pretty much equivalent :D
 
as is my (unsubmitted) ⌈⌿2-⍨/∘⍸1,1,⍨2≠/∘×2-/⊢
I do prefer {≢⍉↑⊂⍨1,2≠/×2-/⍵} though
 
7:09 PM
@rak1507 oh wow, except for the , it's literally a train version of mine
 
@dzaima yep
 
@rak1507 means it creates a bunch of tiny vectors though, which is a ton less efficient
 
@dzaima have you published yours anywhere?
 
@rak1507 not yet
 
@dzaima true... I wasn't sure whether to go for efficiency or niceness
I think for P5 you certainly have to do the sqrt optimisation (it makes the problem easier anyway)
 
7:11 PM
@dzaima i kinda speedran most of them and forgot to improve some strange things i did
 
but for the rest as long as one isn't like O(n!) it's pretty fine
 
There were some "interesting" P5 solutions.
 
my P5 is a fun {⎕div←1⋄⍵(⊢,÷)⊃⌽(a≤⌊⍵*.5)/a←⍸0=(⍳|⊢)⍵}
 
I did some investigating again about P7 and found out my project euler solution didn't even check vertical, only horizontal and the two antidiagonals, and it happened that it was enough.
@dzaima I used ⎕DIV←1 at first but I didn't really like having to set config variables and things like that in the final solution
 
@rak1507 Turns out that it is quite involved to construct almost magic squares.
 
7:13 PM
@Adám It's not too hard I found a simpler 3x3 example than yours earlier (3 3 ⍴ 1 2 3 0 4 2 5 0 1)
 
@rak1507 Yes, because it stays flat.
 
The project euler one didn't even involve magic squares projecteuler.net/problem=11
 
my P7 is ∧/{∧/2=/(+/1 1⍉⍵),+/⍵}¨∘(⊢,⍥⊂⌽∘⍉)
 
but the code for (trying to!) get all rows + cols + diagonals was the same
 
@rak1507 if you check 50% of the directions there, you have a 50% chance of getting the correct answer
 
7:16 PM
@dzaima working mine would have been ∧/2=/⌽,⍥(+⌿⊢,1 1⍉⊢)⍉ which I think is probably as short as it gets
 
yeah is clearly a bunch better there
 
@dzaima yep, I was both lucky and unlucky there, I got the right answer but the wrong code which then came back to bite me later
 
One P5 solution is entirely tacit with ¯9=∘≡⎕NR!
 
doing p5 tacitly ended up wayy longer and uglier for me any way I tried
how long is it?
 
7:19 PM
were you one of the phase 1 winners?
 
@rak1507 What do you say? Am I running the risk of embarrassing someone by posting it?
 
@Adám All solutions should be public anyway imo, go ahead :P
 
@dzaima Will you/may I add it to the wiki?
@rak1507 We are planning to ask explicit permission for that next year.
 
:D
 
⎕←⊃(((⌈(2÷⍨(≢⍤⊢)))(⊣⌷⊢)(⊃(⊢((,.(⊂⍤(⊣,⊢)))⍥(⊃⍤(,/)))(⌽∘⊢))))(0,0,⍨(⍸0∘=⍤(⍳|⊢))))
 
7:20 PM
@Adám
         ┌─────┴─────┐
         ⊃ ┌─────────┴──────────┐
  ┌────────┼────────┐         ┌─┼───┐
┌─┴─┐    ┌─┼─┐ ┌────┴────┐    0 , ┌─┼──┐
⌈ ┌─┼──┐ ⊣ ⌷ ⊢ ⊃ ┌───────┼─────┐  0 ⍨ ┌┴┐
  2 ⍨  ⍤         ⊢ ┌─────┼─┐   ∘  ┌─┘ ⍸ ⍤
  ┌─┘ ┌┴┐          .     ⍥ ⍤  ┌┴┐ ,   ┌─┴──┐
  ÷   ≢ ⊢         ┌┴┐     ┌┴┐ ⌽ ⊢     ∘  ┌─┼─┐
                  , ⍤     ⊃ /        ┌┴┐ ⍳ | ⊢
                  ┌─┴─┐   ┌─┘        0 =
                  ⊂ ┌─┼─┐ ,
                    ⊣ , ⊢
 
Like, I don't even ⍨
I'm amazed and horrified at the same time.
 
@Adám ok, someone discovered tacit programming for the first time and decided to have some fun... either that or it's automated?
 
Yeah, I also thought it might be automated.
 
I feel like this is automatically tacitified
(⊣,⊢) (⊣⌷⊢)
 
@Adám you can
 
7:21 PM
Maybe semi-automatic, based on the guide in dfns.
I gave it -0.2 for style.
 
isn't it normally 0.1? lol
oh, 'particularly bad APL style'
ouch!
 
Do you agree that this this is 'particularly bad APL style'?
Does win the consolation prize for most original inner product: ,.(⊂⍤(⊣,⊢))
 
yeah
@Adám doubt anyone's ever done that one before
 
All in all, I only gave out 5×-0.2 penalties, not counting P7.
 
not counting my p7 or all of them? were there more people who submitted wrong answers?
 
7:26 PM
Not sure what you're asking.
 
Were there other people who got a gold for P7 but then the answer was invalid?
 
Yes.
 
At least I'm not the only one
Maybe if anonymous tradfns exist in the future people will submit solutions using :For and whatnot
 
That'll make it easier for me to judge :-)
@rak1507 Nope, 10 besides for you.
 
10! wow, that's quite a few
 
7:31 PM
Some were much worse offenders, and still passed. I truly failed on the P7 test cases ;-(
 
@dzaima (oh that's completely broken)
 
Yes, I remember judging that one. It checks if there are no more than 2 unique sums (if unfortunately grouped).
 
what i get for speedrunning it all in the last 8 hours ¯\_(ツ)_/¯
(though i'd probably have made the same mistake even if i spent more time on it, but eh)
 
@dzaima whereas I thought I'll get it out of the way nice and early so I can focus on phase 2... and ended up failing p1 and also left p2 to the last minute as well lol
 
@rak1507 I hope you'll forgive me.
 
7:35 PM
I'm more annoyed with myself than anything else
 
7:55 PM
@dzaima Interesting situation, that if I add that link to the wiki, then the wiki ends up hosting your solutions :-)
 
@Adám the beauty of paste - anything wanting to link to it creates a backup of it :)
(CC0, do whatever you want. might be worth in general noting that the solutions aren't guaranteed to be correct/good/whatever)
 
@dzaima Yeah, I was wondering that too, but I couldn't think of a good format for the disclaimer. I suppose it would have to be either repeated every time, or be a shared footnote.
 
@dzaima ⍵/⍨⍵∊'RK' is pretty stupid, now that i've looked at other solutions. Probably because BQN doesn't have //~ :)
 

« first day (1651 days earlier)      last day (996 days later) »