« first day (1164 days earlier)      last day (1490 days later) » 

6:41 AM
Wow, so many upvotes for the very first Q/A in APL on codereview.
 
6:52 AM
Yes, this was a good idea. Thanks, @RGS!
 
Adám has made a change to the feeds posted into this room
Adám has made a change to the feeds posted into this room
Adám has made a change to the feeds posted into this room
Adám has stopped a feed from being posted into this room
Adám has stopped a feed from being posted into this room
 
7:08 AM
Feeds on, Feeds off, Feeds madness, FizzBuzz.
 
@Bubbler Yeah, I'm just getting a hang of how this thing works. Now we should get posts from all sites, SO, CG, CR, RC…
 
0
Q: Finding characters in Classic Dyalog APL character set

August KarlstromIn Dyalog APL the character vector ⎕AV contains all characters in the Classic Dyalog APL character set. Where can i find information about what each character in ⎕AV stand for? I'm trying to find out what each control character in the ASCII encoding corresponds to in ⎕AV in order to filter out in...

1
Q: Dyalog APL: how to write standalone files that can be executed?

Siddharth BhatI now know how to use the APL interpreter, but I'm quite confused about how to write APL into a file and then run the said file. I currently write Dyalog APL using the ride IDE. What I now want to do is to: Use the ride IDE to develop programs (how else do I access the keybindings?). Save my pr...

1
Q: Overstriking for APL on 3270s?

Jeff ZeitlinThis question addressed the question of APL overstrikes on printing terminals. However, IBM also had 3270 video display terminals that supported APL, as well, and those, too, handled overstriking. How?

3
Q: IBM Mainframe APL internals?

Jeff ZeitlinThe APL language used a unique set of characters, and additionally allowed overstriking of some characters on the terminal to form characters that were used in the language. When an APL workspace was saved, or a function with an overstrike was executed, were overstruck characters (e.g., 'domino' ...

9
Q: Finding legal knight moves in a chessboard in APL

RGSI wrote a function that takes as input a vector with two integers between 1 and 8 representing a position in a chessboard and that should output a vector where each cell is a similar vector of integers, with the positions that a knight in the input position could reach. E.g. for the input 1 1, m...

 
RGS
8:02 AM
@Adám The idea was yours :D and yeah, this is a strange number of upvotes; I thought they were coming from the people in this room.
Maybe mods at CR got notified somehow of a new tag and thus upvoted my post?
 
That might mean even more people will be willing to learn APL!
 
This can't be a coincidence:
 
One of them is mine.
 
@Bubbler On SO ?
 
Yes.
 
8:15 AM
Oh.
 
When the feeds refreshed, I just randomly clicked some of the posts, read through them, and did a couple upvotes. I think one went to ngn.
 
8:29 AM
@dzaima right, this is why i didn't go with the approach i attempted now.. ಠ___ಠ (also there are a lot of closures everywhere)
@dzaima though i think i can solve it by introducing a closure in ¨ too. ¯\_(ツ)_/¯
but i am very happy that i suck at deleting things and still have a file open with my previous test-cases for
 
8:47 AM
@dzaima nope, no i can't, ¨ just something my system fundamentally can't handle..
 
9:17 AM
ok, i lied, it is possible, but the code isn't pretty..
https://tio.run/##nVLLattAFN37Kw5ZjbAQHtt5GrcUSnalhUI3xouJPHGmqJIZyfIiGEoWXdUlCwey7sqL7Jr@gD9FP@LemZH8KHYKHWTkuffMPY9RKOJcpKvVK9zyRr348VB8uy9mv6fF7CfzlwsPrIlmMXsuZr/atGmh5TbnXq2Yfy/mX/c9TwfqLz/3NPGOo4kW2pt/OMYJTnGGc6oRYn7g9PN/cT7udfH0L5EcvFm9wVtO2R1vgVvlbfBj8JOyDLNM@RT8DPygjxccPK6WC6gvo@iiVgNG46tIhfgkorHEOB5Izd5ffYYQPsw78cvWxMdbqVUuB@@SEQiWe7itGTUqvYyZEF7H7iy614eWaRNdxHJSliaBEn2H0TJk7HIce5aGKGh4w/8bu13gtDMTvWpANtYx3mgdhFqKTDLTpDlBeiNG0qKm9DP@SDMBkCdqYImJd687FWdQ/lq/0MPU33bzQcud/dr@NZhCt2tPBJGMh9lN1SvjQE5JJMSQZiIOZXINEvEaZQaJF4QiitiWG0d
 
10:10 AM
Is there a ternary assignment pattern? Like in c: v=predicate?if-true:if-false
 
@xpqz predicate⊃(if-true)(if-false)? It evaluates both expressions, but that's just how APL works. If that's needed, {predicate: if-true ⋄ if-false}⍬
 
Ah, cool -- I was trying something akin to the last one, but didn't realise you could use ⍬ to prend your function takes no arg.
Thanks
 
@Adám is dzaima/APL the only APL using minimum depth here? that's been since changed (hopefully being equal to Dyalog), and i want to be sure before i remove all mention of minimum depth
 
10:32 AM
@dzaima - Will that work if if-true and/or if-false are assignments?
 
@JeffZeitlin plain assignments - no. Modifying assignments will work, and so you can hack around by using var⊢← value (assuming var previously had a value in the scope you want it to be in)
@dzaima other thing i noticed in the wiki is replicate, as dzaima/APL's is just ⌿⍥, (probably axis replicating could be added but everything's on hold until is updated or scrapped; i'll see if i can edit it without wasting too much space on my random decisions)
 
@dzaima - Also, predicate⊃(if-true)(if-false) looks like it's dependent on ⎕IO←0, whereas the dfn is ⎕IO-independent.
 
11:12 AM
@dzaima I don't know of any other dialect doing the minimum thing, only the Dyalog version which negates the IBM version which is maximum depth.
@dzaima @JeffZeitlin And if var didn't have a value, you can (I'm not saying should) use the hack var∘← value
 
@Adám that'll make var a global variable though, which might not be wanted
 
11:48 AM
ah, a good ol' TODO for a implementation from 13 months ago.
 
RGS
12:00 PM
@dzaima what is that GitHub view? I have no idea what functionality of GitHub that is!
Also, do we know when the next APL Cultivation will be and on what topic?
 
@RGS git blame - it's a button at the top of every file, or also accessible from the "…" when selecting a line
 
RGS
@dzaima oh ok, what is it useful for?
 
@RGS to blame someone for writing bad code? :p (more seriously, to find at what point in time was a change made, to know what to revert/look into)
 
@RGS Ah, thanks for reminding me. I need to reschedule. But to when…?
 
RGS
12:47 PM
@Adám are you sort of asking me or just thinking "out loud"?
 
@Adám - I like being able to participate, and I'm four or five hours behind you. Anything after 13:00 your time on a weekday is best (for me).
 
 
1 hour later…
2:00 PM
@RGS Just thinking out loud ;-)
 
i'm pretty much done with the rework, but one thing that's left is figuring out whether f⍢(g⍢h) (where g & h are structural modifications) is a sane and/or implementable thing, and it's hurting my brain :|
 
In RIDE, when )editing a function, is there a way to save changes without closing the edit window? Both ESC and hitting the (X) button saves & exits...
 
"fix"?
I could do with having my function fixed...
 
@xpqz that's Dyalog terminology for saving, for some reason. ¯\_(ツ)_/¯
 
2:11 PM
@dzaima APL terminology, actually.
 
@Adám ah okay, y'all're not to blame. it'd be nice for that to show up on a "save" search though
 
RGS
What is the distinction between "APL" and "Dyalog"? Is Dyalog an APL dialect?
 
@RGS Dyalog is an implementation, APL is a standard
 
@RGS - Dyalog is a company that puts out a particular implementation of the language called APL.
 
@RGS Dyalog is a yearly conference.
 
2:14 PM
@Adám - That, too. :)
 
RGS
Ok, thanks!
 
@RGS Good question. I'll make an APL Wiki disambiguation page.
 
@Adám there's not a page on APL in the APL wiki? :p
 
Hey guys, is there a typical idiom for functions that have more than two arguments, or is this an indication that I'm doing something wrong?
 
@dzaima No, it redirects to APL# for technical reasons.
@Evan The normal thing is to take a vector of "arguments" as right argument.
 
2:17 PM
^ and using arg1 arg2 arg3←⍵ may be useful, assuming the function is big enough to warrant it
 
RGS
@dzaima Is this some sort of "unpacking"?
 
interesting...
 
@dzaima I strongly recommend always using parentheses (arg1 arg2 arg3)←⍵ (unless golfing).
 
is there any chance you might be able to do a little code review?
 
@Evan Do you write dfns or tradfns (and which dialect)?
 
2:18 PM
dyalog and I'm using dfns
tbh I've been learning apl for maybe 3 days now
 
@Evan Yes, for sure, but we actually literally got onto codereview.SE yesterday.
 
@Adám - @dzaima's comment just now brought up a thought that keeps popping up in my head: In tradfns, one names the return value and the arguments, but is it allowable to use ⍺ and ⍵ as the arguments in tradfns?
 
@RGS yep. it supports things like ((A B)(C D))←arr too, and even A←(1 2)(3 4 (5 6)) ⋄ (∊A) ← 6⍴⎕A ⋄ A
 
@JeffZeitlin Not in Dyalog.
 
@dzaima Assuming f⍢g is ginv∘f∘g (I can't recall if it is that or the other way around), f⍢(g⍢h) would technically be hinv∘ginv∘h∘f∘hinv∘g∘h.
 
2:20 PM
@Adám i was sad about that for a bit, but then i never used tradfns ever again and the problem was solved.
 
@Adám - OK, was wondering; thought it might be convenient, but not really important.
 
@Bubbler the structural modification part is important though - this can't work with just inverses. It's already defined for purely-computational things
 
0
Q: How do I factor this code that takes multiple parameters?

EvanTo begin, I have an XML file at /Users/gaze/lab/lab/gpib_lib/out.xml that contains lines like... <MemberCall method_name="setFastCoupleMode" callee_name="GPIB_7280" fname="/Users/gaze/lab/lab/gpib_lib/../apps/capbridge/capbridge.C" lineno="394" colno="9" /> <MemberCall method_name="setInputLine...

 
@Evan If there are a significant number using a namespace to collect and pass the arguments can have many advantages, among them no need to worry about position.
 
@dzaima I guess building the effects for g⍢h and undoing it later should work...
 
2:33 PM
@dzaima As an aside, predicate⊃(if-true)(if-false) -- and boy does it seem obvious after I figured it out -- should probably be predicate⊃(if-false)(if-true)
 
@xpqz - And is dependent on ⎕IO←0, yes?
 
@PaulMansour How does a namespace pass arguments?
 
@xpqz yep, true.. :|
 
@JeffZeitlin it is, yes.
 
0
Q: How do I factor this code that takes multiple parameters?

EvanTo begin, I have an XML file at /Users/gaze/lab/lab/gpib_lib/out.xml that contains lines like... <MemberCall method_name="setFastCoupleMode" callee_name="GPIB_7280" fname="/Users/gaze/lab/lab/gpib_lib/../apps/capbridge/capbridge.C" lineno="394" colno="9" /> <MemberCall method_name="setInputLine...

 
2:39 PM
@Bubbler the point of the rework was to switch from the "undoing" mindset to structural functions having an "under" call that does both execution & unexecution at the same time, so it's not that simple anymore
 
What is the technique for posting a block of code in fixed width font?
or in line?
 
@PaulMansour Ctrl+K
@PaulMansour enclose in backtick
 
thanks
I'll put a post it note on my monitor!
 
@dzaima Then I'm afraid the switch might break down at f⍢(g⍢h), because the execution and unexecution of g and h must be interleaved for it to work.
 
@Bubbler it would seem so. :/
 
2:54 PM
  NamespaceExample←{
         p←⎕NS''
         p.FirstName←'Paul'
         p.LastName←'Mansour'
         foo←{
             'Name: ',⍵.FirstName,' ',⍵.LastName
         }
         foo p
     }
@Evan See above
 
@PaulMansour Separate the ping and the multi-line code.
 
@Adám Got it. I see there is handy fixed width button too.
 
@PaulMansour I so can't wait for the literal notation to become available…
 
@Adám For namespaces? Yes indeed.. Has it been decided?
 
@PaulMansour I think the notation is all set. Link already uses it:
      p←⎕NS''
      p.FirstName←'Paul'
      p.LastName←'Mansour'
      ⎕SE.Link.Serialise 1 p 2
(
  1
   (
    FirstName:  ('Paul')
    LastName:  ('Mansour')
   )
  2
                             )
      ⎕JSON ⎕SE.Link.Deserialise '1(FirstName:''Paul''⋄LastName:''Mansour'')2'
[1,{"FirstName":"Paul","LastName":"Mansour"},2]
 
3:15 PM
how do i write {⍵[;4]} in tacit form?
 
@Evan 4⌷[2] seems to work
(4 ⌷⍤1 ⊢)/4∘⌷⍤1 is also an option
 
I posted my binary heap on codereview.se if anyone has time to look: codereview.stackexchange.com/questions/239878/…
 
RGS
yeah, APL on CR is taking off!
 
@RGS - Next project: Get it to take off on SO! :)
 
RGS
That is going to be hard! The other day I posted smth on SO and it took just a couple of minutes to get out of the first page :o
The rate at which new questions are posted there.... it is ridiculous
 
3:24 PM
@RGS - Yeah, I ended up filtering for only the tags that interested me. I wouldn't be surprised if most people do...
 
RGS
yup, but then it is going to be hard to have someone notice APL :(
 
0
Q: A heap queue in Dyalog APL

xpqzI am learning Dyalog APL. I implemented a binary heap, which seems to work. How could I make it look more like APL (and less like Python)? ⎕io←0 heappush←{(⍺,⍵)siftdown 0(≢⍺)} heappop←{ heap←⍵ last←⊃¯1↑heap ⋄ rest←¯1↓heap 0=≢rest:rest last r←heap[0] (((last@0)rest)siftup 0)r } siftdown←{ ...

 
@dzaima how do I lift that into a function?
like how do I lift {A⍵} → somethingAsomething
actually I guess it's funnier than that. i don't understand how [] work
I guess I don't know how to curry ⌷ with axis indicator
 
RGS
3:44 PM
I'm just gonna throw it out there, because in case I get it right it'll be awesome.
Yesterday I was shown how to use ∘ to curry arguments to dyadic functions to use them tacitly
so maybe you'll want to do smth like ⌷∘axis or axis∘⌷ ?
I don't even have the interpreter open, so I didn't test that :P
 
axis∘⌷ works without an axis indicator
 
RGS
:'(
 
4:43 PM
@Evan A∘(⌷[2]) or A⌷[2]⊢
 
Okay! Anything you'd do to improve the following: {(1⌷⍉⍵∊⊂'callee_name')/2⌷⍉⍵} ¨ (4⌷[2]⊢) {⎕XML ⊃⎕NGET ⍵} filename
also, why does ⊢ work the way it does in your solution?
is it acting dyadically or monadically?
 
5:00 PM
@Evan Monadically. is simply the identity function, forming a 3-train: (A)(⌷[2])(⊢)
 
oh is there a good introduction somewhere to this tacit form?
 
thank ya!
 
@Evan That's meant as a snippet/expression right? Not a function by itself, but inside another function.
 
5:26 PM
yes
well ok... why do you ask?
 
@Evan Then you can "unpack" subexpressions: 4⌷[2] ⎕XML ⊃⎕NGET filename instead of (4⌷[2]⊢) {⎕XML ⊃⎕NGET ⍵} filename
@Evan Why the mixture of styles? ⌷[2] vs ⌷⍉ ? I'd actually recommend using (⌷⍤1) if I understand your code right.
 
I think I was just seeing what works there.
I imagine for most purposes you'd much rather index than transpose and then index.
but anyway. The goal here is to open an XML file, and assuming it only has one tag at level zero and everyone has the same attributes, extract the values of a particular attribute... namely 'callee_name'
but I'd like to make this a left argument.
 
@Evan Just replace 'callee_name' with
@Evan Well, if you are working on columns all the time, you might want to simply transpose the table once, and then work on rows instead.
 
5:48 PM
so let's see...
I have something like ({(⍵[;1]∊⊂'callee_name')/⍵[;2]}¨(4⌷[2]⊢))x
 
@Evan Ah, but you want the name as left argument.
 
but I want to factor it to something like

'callee_name' ({(⍵[;1]∊⊂⍺)/⍵[;2]}¨(4⌷[2]⊢)) x
but that's a 3-train so it'll turn into something... weird.
 
@Evan Simply put between the two functions: {(⍵[;1]∊⊂⍺)/⍵[;2]}¨∘(4⌷[2]⊢)
 
hmm I get a length error when I do 'callee_name'({(1⌷⍉⍵∊⍺)/2⌷⍉⍵}¨∘(4⌷[2]⊢))x
 
@Evan You lost a
 
5:54 PM
mmm still doesn't work I'm afraid
sorry
 
What have you now?
 
10↑'callee_name'({(1⌷⍉⍵∊⊂⍺)/2⌷⍉⍵}¨(4⌷[2]⊢))x
 
@Evan Oh, my bad, the ¨ will try to map each letter.
Try: 10↑'callee_name'((⊂⊣){(1⌷⍉⍵∊⊂⍺)/2⌷⍉⍵}¨(4⌷[2]⊢))x
 
oh yeah that works.
I'm a bit confused why it works though
is that a 3-train and a 2-train?
 
@Evan We need to enclose the left argument to make ¨ map the entire left argument to each element in the right argument.
@Evan A 3-train: (⊂⊣) {(1⌷⍉⍵∊⊂⍺)/2⌷⍉⍵}¨ (4⌷[2]⊢)
 
5:59 PM
is there a tool to see how these things parse?
 
@MortenKromberg Good news: We got the ball rolling on Code Review Stack Exchange.
 
RGS
@Adám Monadic or dyadic?
 
@Evan Yes, enter ]box on -trains=tree and then simply enter the function without arguments.
 
RGS
@Adám Maybe you prefer this link?
 
@RGS Yes, fixed.
 
RGS
6:00 PM
:)
 
woah that's extremely cool
thank you for all the help!
I've gotta go to a meeting but this has been super helpful
 
I've very much got to go now too. Have a good weekend everyone!
 
RGS
You too!
If I ping you, don't be mad at me :P Just reply next week. Would that be fine?
 
Absolutely; that's what I want you to do.
 
RGS
Ok, thanks. Have a fine weekend o/
 
6:05 PM
Adám has added an event to this room's schedule.
 
Announcement: APL Cultivation moved to Tuesdays 14:30 UTC every 14 days beginning April 7.
@petStorm @user406097 @rcabaco @user11942533 @Jeff Zeitlin @JPeroutek @xpqz ^ Consider re-registering.
 
Adám has removed an event from this room's schedule.
 
RGS
I assume I am also invited ahaha
will register!
 
Adám has added an event to this room's schedule.
 
@RGS Of course, everyone interested is. And please do let me know any desired subject.
 
6:10 PM
@Adám - Registered!
 
Adám has removed an event from this room's schedule.
 
This change is both due to my own scheduling needs and in anticipation of Dyalog webinars and BAA workshops happening on alternating Thursdays.
 
BAA? British APL Association?
 
Yes.
 
RGS
@Adám Unacceptable! xd
 
6:16 PM
I don't know if this is necessarily a really appropriate topic for the Cultivations, but I think something about converting code from other languages would be a useful/interesting possibility.
 
Maybe something more limited in scope like how to express conditionals and loops with array operations?
 
Yes; those would probably be key concepts to address.
(101 APL Computer Games by David H. Brudzinsky?) :)
 
@JeffZeitlin Who's that‽
 
:) Just a pen name for the guy that translates Ahl's book into APL from BASIC.
 
OK, now I really have to go. ○/
 
RGS
6:24 PM
bye \o
 
Gut Shabbes!
 
7:23 PM
hmm, stumped via algorithm (gnu apl)

i'm trying to get numbers between the ranges of indices.

for example:
      ⍝ 1 0 1 → 0 1 0
      ⍝ 0 1 0 1 → 0 0 1 0
      ⍝ 0 1 0 1 0 1 → 0 0 1 0 1 0
      ⍝ 0 1 0 0 1 0 0 1 0 → 0 0 1 1 0 1 1 0 0
 
RGS
8:01 PM
Aren't you just inverting everything, except for the first and last zeroes?
Maybe work with that?
 
hmm yea its been a long week hah
 
8:21 PM
trim ← {⍵↓⍨¯1+(~⍵)⍳0}
hof ← {(⍶ ⍵),⍨⍵ {1⍴⍨(≢⍺)-≢⍵} ⍶ ⍵}
inter ← {~ ⌽trim hof ⌽ trim hof ⍵}
seems to work
 
@cannadayr i have this
 
ooooh
oh thats nice
thx
 
{~ ¯2↓ 1⌽⍵} what RGS said
Don;t know if it's applicable, both the algorithm and if it's GNU appropriate
{0,0,⍨ ~ ¯2↓ 1⌽⍵} that is
 
8:43 PM
fun bonus question, what if I want to do it assymetrically:
between 1-2 but not between 2-1

0 1 0 0 2 0 →0 0 1 1 0 0
0 2 0 0 1 0 → 0 0 0 0 0 0
cant spel
@FrownyFrog i also like that
{(~2=⍵)∧ (∨\⍵) ∧ ⌽2=∨\⌽⍵} 0 1 0 0 2 0
0 0 1 1 0 0
{(~2=⍵)∧ (∨\⍵) ∧ ⌽2=∨\⌽⍵} 0 2 0 0 1 0
0 0 0 0 0 0
 
RGS
9:15 PM
I can't give a name to a tacit function in dyalog APL?
 
@RGS - Why not?
 
RGS
Hmm maybe just in files
I tried writing funcName ← (⌽,↓) and fixing the file
Just to see what would happen. The editor wasn't keen on fixing that file
 
Well, in the direct terp, I just did f←⌊÷ for the integer-division function, and it worked just fine...
 
RGS
yes, in the direct terp
 
5 f 2
2
 
RGS
9:25 PM
yeah, my chat msg wasn't explicit enough
but nvm, it is not really important
 
What error were you getting?
 
RGS
hm let me reproduce it
"Cannot fix object without a name"
 
Weird
 
RGS
And this is what I have typed div← ⌊÷
in the file editor
 
I wonder whether you can hack around it by doing something like ⍎'div←⌊÷'
 
RGS
9:32 PM
no idea, but tbh it doesn't really matter that much right now
 
hmm still dont quite have it.

basically, I want to span 1-to-1, 1-to-2, but not 2-to-1 (numbers are arbitrary can be wtvr)

x ← 0 0 2 0 1 0 2 0 1 0 0 1 0 0 2
y ← 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0
 
10:26 PM
@cannadayr so, fill in between when non-decreasing?
 
yes
 
0 0 2 0 0 2 0 0 0 would be 0 0 0 1 1 0 0 0 0?
 
hmm still playin aroun
0 0 2 0 0 2 0 0 0 → 0 0 0 0 0 0 0 0 0
 
@cannadayr but 2-to-2 is non-decreasing
 
sry, except for 2's
not rly a uniform rule
... yet
 
10:29 PM
@cannadayr ah, so "numbers are arbitrary" means that i can choose some replacements for 1 and 2, not that all integers must be supported
 
correct
actually there wont occur a 2-2 in my data
 
in that case, i've got this crazy monstrocity that's probably slower than a more trivial approach, but i've gotta go
https://tio.run/##TVBNS8NAEL33Vww9JaSh2dw9WK8i3o2HNMnqQtIN@ZJavYZWulKR4kmQopibB@1F6KX@k/kjcdJQkWVn580b3nusG4emP3ZDeVHXXorlYmI4zES1drYfttm3etT2DQIMy0erx1B9oapwtqL5LaB6hkj6govAh8PTY89NMpAcukd5lIduJooA0jxKQTMcHWQRJASHReBlMkmbxZMCxMgXnpuRwHAMg6ILVyK7JIKyaOQzKHTyZB0eN@HI9YzhfKqh@mxD6GabzUuB9SycvdDsvE3GRRi2anESFELmKYzkyLwOEgkiC6IOh0aTtNYHlo7Td/vGcBpEKpb@89S2rzjfkPl805gZGrd3LG3v2DfC5YLH0PxHB@@Xu9h3qwmWD6iW22pbofpuSK6DRcemy/69@9pi@6/fV6uufwE
 
nice ill check it out. thx stay safe.
i was also attempting a monstrosity but ill post results when i get it working
 
10:53 PM
woops turns out i found a case of a 2-2. ill mess around w/ it later. heres a case where it was working tho:
○
├○
│└○
├○
│├○
││└○
│└○
└○
 ├○
 │├○
 │└○
 ├○
 │├○
 │└○
 └○
 
11:09 PM
0
Q: Finding legal knight moves in a chessboard in APL (follow-up)

RGSThis question is a follow-up to this previous question of mine. Assuming I understood correctly what is outlined in this meta post. I wrote (and now, re-wrote) a function that takes as input a vector with two integers between 1 and 8 representing a position in a chessboard. This function should ...

 

« first day (1164 days earlier)      last day (1490 days later) »