« first day (627 days earlier)      last day (2022 days later) » 

12:47 AM
@arcfide yes I'd say I"m familiar with the basic APL syntax, what I'm unfamiliar with is certain operators, and how operators are used. I can read a train just fine. I just often don't know this operator or that operator, like how right tack is used, or the various quad operators are used.
What's more is that I don't understand number theory to the extent that it would seem required to write APL effectively, because as it appears from attempting to write "vector oriented" solutions, as opposed to functional, recursive, iterative, or object oriented solutions, one would need a firm grasp in number theory or some other form of category theory or linear algebra
 
 
7 hours later…
7:49 AM
@nathanrogers nope. Until recently I hadn't gotten formally taught vectors (still haven't gotten taught matrices) but I still understood APL.
I mean sure, I have no idea what the hell a cross product is, but that doesn't seem to be required to write APL efficiently.
 
 
1 hour later…
9:04 AM
@nathanrogers I suppose you by operator mean glyph (or in APL terms: primitive), and not APL's specific use of the word. Obviously, you'll have to get familiar with the most common primitives, but that comes fairly quickly for the most common ones. Is actually the very simplest of all functions. It ignores any (though optional) left argument and returns its right argument; equivalent to {⍵}. It is use to access the right argument in a tacit function, and to separate arrays.
 
to add to the above - is equivalent to {⍵}. It is. There's nothing special about it (nor about {⍵}, it's a regular simple function). It is that simple
 
@dzaima CMC: Given a black box function which is either or {⍵}, determine if it is (i.e. return 1 or 0).
 
@Adám o.O {⍵}⍣¯1⊢1 doesn't error?!?
 
@dzaima Hm, that may be because {⍵} and are actually the same internally. I'll log the issue. Thanks!
@dzaima I'm down to 13.
 
9:29 AM
no idea what the hell you're doing, I have 18
 
@dzaima My 13 is a tradfn. I've also got a dop (which needs a dummy right arg) at 16. What have you got?
 
ngn
@Adám does "black box" mean no ⎕cr?
 
@ngn No, but maybe it should. If I can't use ⎕CR then I need 16 for both tradfn and dop.
 
ngn
1=≢∊⎕cr'f'
 
@ngn You need f←⎕⋄ before that, no?
 
ngn
9:35 AM
@Adám idk, you posted the cmc :)
 
@ngn You can save one byte: ∊⎕CR⎕VR
Ok, and how about if you can't read the code?
 
ngn
right
 
Got 15 (including getting the input).
 
ngn
{0::0⋄⎕⍣¯1⊢1}0 ?
 
@ngn dzaima found that {⍵}⍣¯1 is allowed. I logged that.
 
ngn
9:41 AM
@Adám in the version i have it errors
 
@ngn What version is that?
 
ngn
@Adám 15.0.29007
i know... to old, never mind, I'll try to think of something else
 
@ngn {⍵}⍣¯1⊢0 doesn't error in my 15.0.29412 or 14.1.33725
 
ngn
@Adám oh wait... it behaves differently in the session?
 
@ngn … than in …? (love your chat animations)
 
ngn
9:45 AM
@Adám as a program, with "-script"
@Adám :) markdown hates me
 
@ngn What exactly are you running?
 
ngn
#!/bin/bash
(echo ∇M;tail -n+3 $0;echo -e '∇\nM\n⎕off')|dyalog -script;exit $?
⎕io←0

f←{⍵}
{0::0⋄f⍣¯1⊢1}0
 
@ngn OK, can repro, but I don't think it is -script that makes the difference.
 
ngn
huh! i've just discovered that that works in the repl too, but when I replace f with ⎕, it behaves differently
 
@ngn Exactly, I was just about to post: Try it online!
Anyway, let's see if you can figure out my 15 or 16 without relying on this…
Hint: I rely on queryable characteristics which are not source code.
 
ngn
10:01 AM
@Adám ⎕nc?
 
@ngn Yup, that gave me my 16er.
 
ngn
f←⎕⋄3.3=⎕nc⊂,'f' ⍝ but that's too long
yet golfable
 
No, that's the exact 16 bytes I found.
@ngn Really?
 
@dzaima Nice. That is what I got too.
 
10:05 AM
14 with swapped 0 and 1
 
ngn
10:36 AM
@Adám 0⍴# is a nonce error. Are we supposed to be able to do ⍬⊢¨#?
 
@ngn 0⍴# isn't (by me) and shouldn't be a nonce error.
 
ngn
strange... 0⍴# is not a nonce error on tio
grr... life's too short for this
 
@ngn I'd say upgrade, but then again, it works in my 15 too.
 
ngn
it's my mistake - what i do to 0⍴# after that causes an error; I always get into this trap with namespaces...
 
 
3 hours later…
1:49 PM
@dzaima Why should it error?
 
@H.PWiz I don't think it should error, but it's just that every other dfn errors.
 
Yeah, there is special code for {⍵}⍣¯1 in the interpreter. Presumably because its an idiom. It does seem wrong that f←{⍵} ⋄ f⍣¯1⊢0 fails though
 
@H.PWiz I see no reason for that to be an idiom as it's equivalent to ⊢⍣¯1 which is equivalent to though..
 
I mean that {⍵} is an idiom
 
@H.PWiz ah. Why is it an idiom though? ._.
I understand {⍺} being an idiom since that's not , but {⍵} literally is
 
2:06 PM
No idea tbh
 
{⍺} and {⍵} were made idioms before and were added to the language. It was done to speed up by bypassing parsing the dfns' code.
 
ah, that makes sense
I understand wanting to do that as my APLs performance of 1+1+1+1+1+1 is almost the same as 10000⍴123456 :P
 
@dzaima Huh, why?
Do you mean that as in “both are too fast to measure” or what
 
2:22 PM
@Quintec both are equally slow, tested by timing each evaluated 1000 times. I didn't bother making the parser fast :p
 
I’m still confused as why that is
 
@Quintec why 1+1+1+1+1+1 is so slow? because I didn't make it fast
 
But 5 operations should be faster than 10000, no?
 
@Quintec the 1s are jumping around this whole file for each character of that, and instantiating objects left and right. 's just got these 4 lines to worry about.
also this too
it's not the math that's slowing everything down. It's literally everything else that has to happen.
for each character it goes trough this while loop at least once (every other char twice I think), and each is call is this thing which goes trough the given string and inefficiently goes trough a LinkedList.
 
ngn
2:40 PM
sidenote: k has a system command \t:1000 expr to time 1000 evaluations of an expression. I think all languages should have that, it's very handy.
 
]runtime -compare 1+1+1+1+1+1 10000⍴123456
 
@Adám

  1+1+1+1+1+1  → 1.7E¯7 |     0% ⎕⎕
* 10000⍴123456 → 3.5E¯6 | +1944% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
 
ngn
dyalog has "cmpx" (if I remember correctly) which can compare the performance of multiple expressions and it's smart - it increases the number of iterations exponentially until the time goes over a certain threshold
 
@ngn my APL: 100 ⎕htime 'expr'
 
@dzaima h?
 
ngn
2:43 PM
@Adám good to know, i never learnt to use those ucmds
 
@Adám human. It prettifies to milliseconds/seconds/nanos. Just ⎕TIME gives out a nanosecond number
 
@dzaima Yikes, quad-name proliferation…
 
ngn
@EriktheOutgolfer yeah, yeah, but it's a habit
also, ucmds are awkward to use from a script file
 
ucmds are useless from a script file :P
 
ngn
2:45 PM
"⎕SE.something something..." I can never remember that
 
⎕SE.UCMD'…'
And if you want to avoid doubling quotes:
result←⎕SE.UCMD⍞
…
 
ngn
@Adám hm... i remember seeing much longer paths, with at least two dots after ⎕se
 
@ngn There are a lot of things in ⎕SE. Maybe you're thinking of ⎕SE.Dyalog.Utils.repObj?
 
ngn
unfortunately ⍞ can't be used in a script
@Adám yeah
so, I learnt something new today... let me try it
VALUE ERROR
M[6] ⎕SE.UCMD']runtime -compare 1+1+1+1+1+1 10000⍴123456'
    ∧
(this is from a file which is piped through dyalog -script)
 
@ngn Works by me, but try ⎕SE.UCMD'result←runtime …
 
ngn
2:52 PM
@Adám same thing - value error
 
@ngn OK, so you're trying to capture a result. I'll add ⍬⊤⍬ to 17.1.
 
ngn
@Adám how can I not try to capture a result?
I understand my setup is unusual, by the way, this is not to rant against ucmds
 
@ngn this mess, maybe?
 
ngn
@dzaima that worked! :)
⎕io←1 ⍝ doesn't work with 0
(⎕NS⍬).⍎'⎕CY''salt''⋄⎕SE.UCMD''←box on -trains=tree''⊣enableSALT⋄⍬'
(⎕NS⍬).⍎'⎕SE.UCMD'']runtime -compare 1+1+1+1+1+1 10000⍴123456'''
 
that's in my "important.txt" file :p
 
ngn
3:01 PM
I guess the "box on" part was not essential, only the ⎕cy'salt'
 
@ngn Btw, you can golf the first . and the ] and ompare
 
ngn
@Adám first: make it work, second: golf it :)
I don't understand why, but the "box on" part is essential - it fails without it
oh, hang on... it's the "enableSALT" that matters
sneaky :)
@dzaima what else is there that you are willing to reveal? :)
@Adám golfed: (⎕NS⍬)⍎'⎕io←1⋄⎕CY''salt''⋄enableSALT⋄⎕io←0⋄⎕SE.UCMD'']runtime -c 1+1+1+1+1+1 10000⍴123456'''
 
@ngn an old version of my fds, JS APLifiying functions, a python program to transpile BF to C++, some tio links to stuff for homework, and more TIO links. I think that's really the only important thing there :p
 
3:21 PM
Anyone ever had a moment where RIDE doesn't close, even after )off'd?
 
@Zacharý o/
 
Yeah. pkill it is then
 
@Zacharý when that happens to me, I can just close the window though
 
pkill dyalog worked.
 
@Zacharý me too.
@Zacharý Can you consistently reproduce it?
 
3:25 PM
@dzaima I couldn't. So I pkill'd, then closed.
@Adám It might be due to how long RIDE was open on my computer O_O
I forget to close things sometimes
 
@Zacharý It really shouldn't matter. Can I bother you to make an experiment with leaving RIDE open long?
 
No, not at all.
 
@Zacharý how long is long? I constantly have Dyalog open on another workspace/whatever :p
 
And I tend to do nothing with it in that timeframe>_<.
 
4:22 PM
@dzaima my point was about being able to intuit the relationship between numbers and their properties to solve problems by "vector oriented" as opposed to algorithmic means. The bracket balancing solution uses a lot of hokey math to accomplish the balancing. Things that I'd never have been able to intuit to arrive at that solution.
And if you look at the rover solution in the jugalbundi, it appears to be much the same. hokey relational number bunk that I would never have thought of because I don't know how to see problems through relationships between numbers
 
In mathematics, the Iverson bracket, named after Kenneth E. Iverson, is a notation that generalises the Kronecker delta. It converts any logical proposition into a number that is 1 if the proposition is satisfied, and 0 otherwise, and is generally written by putting the proposition inside square brackets: [ P ] = { 1 if P ...
 
 
3 hours later…
7:32 PM
in product, i.e. ".", what does the left argument mean?
for example ⍳10 10 10 ≡(⍳10)∘.,⍳10 10
but (+/⍳10 10 10)≢(⍳10)+.,⍳10 10
and (+⌿⍳10 10 10)≢(⍳10)+.,⍳10 10
 
⎕←(3 2⍴819⌶⎕A){⍺⍵}.,2 3⍴⎕A
 
@Adám
┌───────┬───────┬───────┐
│┌──┬──┐│┌──┬──┐│┌──┬──┐│
││aA│bD│││aB│bE│││aC│bF││
│└──┴──┘│└──┴──┘│└──┴──┘│
├───────┼───────┼───────┤
│┌──┬──┐│┌──┬──┐│┌──┬──┐│
││cA│dD│││cB│dE│││cC│dF││
│└──┴──┘│└──┴──┘│└──┴──┘│
├───────┼───────┼───────┤
│┌──┬──┐│┌──┬──┐│┌──┬──┐│
││eA│fD│││eB│fE│││eC│fF││
│└──┴──┘│└──┴──┘│└──┴──┘│
└───────┴───────┴───────┘
 
@nathanrogers left operand. Does the above help you?
 
note that 819⌶ is "lowercase"
 
that's a rather convoluted way to say lowercalse
its just about as many characters
so the left argument is row-wise but the right argument is column wise?
which means ∘.f x is (⍴x) by ⍴x-wise
correct?
 
7:40 PM
@nathanrogers ∘. is completely separate from .
 
@nathanrogers ∘.f cannot be monadic. You mean x ∘.f x (or ∘.f⍨x), right? And as dzaima said ^^
 
yes
which means y ∘.f x is (⍴y) by ⍴x-wise
 
@nathanrogers Formally, (⍴A ∘.f B) ≡ (⍴A),(⍴B)
 
so wait, arguments to f.g must match length on some dimension?
no the above example didn't help me
I'm trying to play with it, but I'm not getting it
 
7:45 PM
@nathanrogers in A f.g B (⊃⌽⍴A) ≡ (⊃⍴B)
 
@nathanrogers Yes, formally (⍴A f.g B) ≡ (¯1↓⍴A),(1↓⍴B) and (¯1↑⍴A)≡(1↑⍴B) is required.
 
in otherwords leading and trailing dimensions must match
 
@nathanrogers trailing and leading, I'd say, but yes.
 
i see
i can hav a 1x3 mat f.g 3 x 20000 mat
 
7:48 PM
n1 x k f.g k x n2
so then, f is applied / over the ⌿application of g?
or f/ A g⌿B?
 
f/A g¨B
 
(+/(⍳5) ,¨⍳5) ≡+.,⍨⍳5
⎕← ,¨⍨⍳5
 
@nathanrogers
┌───┬───┬───┬───┬───┐
│1 1│2 2│3 3│4 4│5 5│
└───┴───┴───┴───┴───┘
 
⎕←+/,¨⍨⍳5
 
@nathanrogers
┌─────┐
│15 15│
└─────┘
 
7:52 PM
⎕←+.,⍨⍳5
 
@nathanrogers How about this?
 
is there something missing?
it would appear ((AgX) f (BgY)) ((DgX) f (EgY)) like there is something missing in the middle
 
@nathanrogers No, that's a 2-element vector result.
 
bwah
color me lost. if lost were a color
can we try without formalisms, a laymans explanation?
 
@nathanrogers also, I don't understand . too, at all :p
 
8:00 PM
@nathanrogers My father taught me f.g on two matrices using fingers on a paper, but that's a bit hard to do over chat. Let me know if APLX's rather extensive description doesn't work for you either, and I'll try to explain what to write on a paper and how you should move your fingers.
 
@dzaima this is what I meant when I said yesterday, linear algebra
 
@nathanrogers I've been using APL just fine without ever needing to use . though
 
i'll take a look @Adám thanks
@dzaima it keeps coming up in videos
and I want to understand the examples instead of just accepting that it's just part of the solution
 
@nathanrogers By far most usages are with vector arguments, in which case A f.g B is just f/ A g B
 
8:19 PM
Yeah, most of the time, only the (1-D) vector cases of f.g and ∘.f are used, which aren't linear-algebra nightmares.
@Adám WAIT... that sounds like matrix multiplication ... goodness I get the 2-D case now.
 
@Zacharý OK, now you just extend from that to 3D case by treating each layer separately etc.
 
Thanks!
 
 
1 hour later…
9:29 PM
about this question of why +' is flip each as the projection never seem to be that useful for plus, i would say it is just consistency
k is designed to know monad/dyad at parse time, not runtime
without parameters it's the dyad as i think that's more useful for adverbs like +/ and +\
it would be confusing to have a exception for a different adverb (')
 
is there a equivalent to the J built-in lessons for APL?
 
ngn
10:22 PM
@AttilaVrabecz thanks for taking the time to answer. that makes sense
 
10:41 PM
Regarding the concern about intuiting "APL solutions" to problems, people should be patient with themselves. Remember that most people take years to develop a strong intuition for the construction of efficient, effective solutions in normal programming languages, often requiring years of learning to truly grasp the intricacies of the nature of control flow and process through University C.S. programs.
This intuition for process is not easy or common for the average person, and APL is accomplishing the same things with different techniques than is standard. They aren't hard, but they do take time to appreciate and learn to a sufficient level to intuit solutions using them.
2
Indeed, I feel that prior programming experience can even make the process of learning APL solutions more challenging.
 
@arcfide indeed it is proving so for me, as I want to jump straight to algorithmic solutions which often prove to be incredibly inefficient
 
@nathanrogers Did you get your questions about Inner Product answered?
 
furthermore, I'm finding that there are parts of K and J and APL that I think are much stronger than other parts of each respective language, and there is some synthesis of these languages which would be more succinct and expressive than either of them individually
 
@nathanrogers I would urge caution with this sort of thinking.
 
why is that?
 
10:48 PM
@nathanrogers The world is filled with the mutated remnants and sometimes still extant half-solutions of people who thought they had understood how to "make a better APL" without truly understanding APL.
 
no it isn't that at all. I don't think I can make a better any of them, because I can't fully comprehend either of them
 
K and APL may appear to be similar, but they are in fact very different, and trying to cherry-pick from these languages is usually the first sign of trouble.
 
what I'm saying is that there are parts of K which are more intuitive than APL, parts of APL more intuitive than K, and parts of J which are more sensible than either
to the prior-programmer
 
And I'm saying that the word intuitive and what it means to people can be very deceiving. I'm sure you find certain things easier to grasp initially in any given language, but that doesn't necessarily imply that a synthesis of these parts would lead to a better language, or a stronger one.
Indeed, this is perhaps more true within these languages than in others.
They are deeply holistic designs. It's a common historical problem, IMO, to see attempts to explain APL or K or other languages in terms of this feature or that, when in reality, I think that what they deliver is not a matter of their syntax or semantics, but in the particular emergent qualities that derive from the complex interplay between these features that in and of themselves are nothing special.
That's why I think the caution is warranted. It's easy to feel that the things you found more "sensible" in one language or another represent a strength of that language, which may or may not actually be so.
Indeed, talking about "parts" of any of these languages is very difficult.
I think that the designs of APL, K, and J are difficult to take "in part."
Sorry, I'll get off my soap box now.
I'll try to save the preaching for my blog.
@nathanrogers How long have you been playing with APL? Do you have a "favorite" so far?
 
i came to apl and have come back to apl through a strange series of circumstances, initially in an effort to create a syntax for common and simple array methods. then I found k, the attempted learning of which lead me to the full history of k, j and apl. I prefer J, but i found it's lack of support discouraging.
 
10:57 PM
By favorite I mean a favorite exemplar program.
 
i recognized quickly that between iverson, whitney, and hui, I had no chance of designing anything more consistent or efficient than what was already available, but at the same time, bemoaning the fact that I'm not really gaining any marketable skills in my field, and indeed alienating myself from software engineering in general
I think it was morten kromberg that said that software types are often offended by the sensibilities of this trifecta of languages. and it has proven to be the case thus far in my experience
but that was the point of the language I was attempting to design, only to recognize that APL had already been around since the dawn of computing, had its golden age, and fell out of favor in the world of computer science
 
To be fair, I don't think it ever fell into favor with the world of C.S.
 
not according to many gray hairs and articles I was able to find
most people I have met in industry that were around back then started with APL on some mainframe
 
My reading of things is that it was popular with those tangential and related to the field of C.S., but the core C.S. departments never thought highly of it on the whole.
 
as far as I can tell the timing of the end of mainframes coincides with the decline of popularity of APL
 
11:02 PM
Yes, I think that is correct.
 
that's because APL was widely used before CS was a thing
before it was called CS, before therer were degrees in CS, which happened around the 70s
i.e. the same time as the decline of usage of APL
 
I think Dijkstra famously insisted that he would never let APL into any University he was a part of if he could help it.
 
that comment came after saying that APL would be a great teaching tool for algebray
so dijkstra was a bit flippant with his comment based on the context
 
A Knuth has also expressed sentiments about it being more of a "problem solving" language than a "computer scientist's language."
 
that's because their mode of thinking was based on algorithmic solutions
 
11:03 PM
Well, I think it was a very popular tool for math, engineering, and so forth.
 
as opposed to recognizing that iteration could be generalized
which is my beef
 
But Core C.S. is a different field.
Well, I don't blame them for that, really.
 
manual iteration "encourages" faulty ideas about "coding" when the direct logic can be generalized
 
That's why I also don't think APL's Golden age has yet happened.
 
i do. I really do blame them for that. it's lack of discipline and lack of pragmatism
 
11:05 PM
Well, at the time, we simply didn't have the theory to support a lot of what we take for granted now.
Especially not at the widespread level of general wisdom in the Computing Industries at large.
 
you see the code that some people write in explicit for loops, with all of its mutation, it's incredibly pathetic, because they don't teach pragmatism and languages often don't enforce, nary even encourage proper direct reasoning
 
I think that's a complaint we can have right now because of where we are with computing hardware, problems, and C.S. implementation theory. I don't feel that we would have had the luxury to complain about such things in the 80's with nearly as much strength.
 
it's directly as a result of the mode of teaching that computer science has adopted. Yes algorithmic design and analysis a.k.a. knuth is profoundly important, but algorithms can be further generalized and simplified by abstracting iteration into operations like APL has
in particular, I write most programs through lambdas and array methods
why bother having them at all. the same reduce by addition or boolean, the same filter by this = that, the same map by adding n
 
I think a lot of that comes from the lack of growth in C.S. education as a result of OOP retardation in the exploration of algorithmic expression during the 90's, leading to a deep period of recovery both in terms of hardware and pedagogy that has only recently (in the past 10 or 15 years) given us the opportunity to begin to realize a vision that was put on hold in the 80's.
 
why bother? why don't language designers come to recognize that the fundamental unit of operation in computers is done on lists and arrays, not on individual values!
which is where the weaknesses of the vector languages reveals itself, because in order to leave the vector space into other datatypes is completely unintuitive and often painful
 
11:10 PM
Why leave?
 
i heard tell of APL having notation for hashtables and trees but was never implemented
 
And probably good thing too.
 
the proliferation of json would disagree
 
I have slowly over a period of years come to be deeply cynical about datatype abstraction.
 
and what's more is that implementing other data structures invariably conflicts with the philosophy of the rest of the design of vector langauges
 
11:11 PM
The proliferation of JSON has, IMO, little to nothing to do with any innate superiority of the format.
Have you seen my Patterns v. Anti-patterns talk(s)?
 
i can't say I know who you are, so probably not
 
I speak at some length of the issue of abstraction and datatypes in those talks:
 
what did you mean earlier by exemplar programs?
 
oh yes, I saw that
 
11:14 PM
Okay, great, so then you know why I'm not sure I can agree with you about the whole data structures thing.
I meant what you felt was your favorite APL example program.
 
but then there are some problems that simply need trees to be efficient
n queens for instance
 
Indeed, there are.
Are you aware of my research?
 
In particular, that compiler is the research artifact (still in development) that will eventually be published under my dissertation, "A data-parallel compiler hosted on a GPU" or something like that.
In short, APL is an excellent language for trees.
It's a common misconception that APL and array languages in general are poor tree languages. However, I would instead assert that the way that we think about trees, particularly the insistence on isolated data abstraction and recursive iteration patterns that are neither conducive nor natural to execute on modern hardware, is in the same class of mistakes as is the emphasis on for loops and explicit iteration that you lamented above.
 
'000000',"1>,{6#<'0123456789ABCDEF'
that in J is my favorite exemplar program
16.7million sequential mac addresses. needed to do it for work, python struggled to get 2 million, but j takes like 5 seconds
 
11:20 PM
Indeed, the vocabulary for working with trees finds a nearly direct expression in APL coupled with a few simple to learn idioms and traditional array techniques, enabling short, concise, and direct expressions of tree algorithms directly in APL and other array language without any need for excessive data abstraction.
 
,⊃∘.,/6/⊂'abcdef'
 
Hahah.
 
that's the best I got for apl. the rest of it with more combinations gets really slow
 
That's a fun one.
Although MAC addresses are just numbers, so you could just use encode.
 
please keep writing, I'll read it when I get bacck
more links more info more reading
i need all o dat
 
ngn
11:23 PM
@nathanrogers did you look at this
 
@nathanrogers Generating sequential MAC addresses (6 octets) in Dyalog APL, IO 0, in 1.2 seconds:

'0123456789ABCDEF'[(12⍴16)⊤⍳16.7e6]
This starts from 0, but you can of course shift this to whatever address you want.
That's assuming that you need them in textual form.
Here's 5 random ones:
⎕←⍉'0123456789ABCDEF'[(12⍴16)⊤?5⍴2*48]⊣⎕IO←0
 
@arcfide
INDEX ERROR
 
Oh pish. IO strikes again.
⎕←⍉'0123456789ABCDEF'[(12⍴16)⊤?5⍴2*48]⊣⎕IO←0
 
@arcfide
8474E2DAD757
B61FFF5109A9
565995A56F4C
BA7182F76954
0D3143BD0D54
 
ngn
@arcfide 16.7e6 is 6 hex digits, not 6 octets
 
11:37 PM
@ngn Didn't he say that he wanted 16.7e6 MAC Addresses?
⎕←⍉':'@(' '∘=)(17⍴1 1 0)⍀'0123456789ABCDEF'[(12⍴16)⊤?5⍴2*48]⊣⎕IO←0
 
@arcfide
89:45:9A:85:D7:87
AF:CD:63:81:C8:C9
97:C8:9B:00:CE:75
2F:A1:F0:ED:12:E8
A1:48:59:E4:BD:3A
 
ngn
@arcfide oh, right
 
@nathanrogers Do you understand why your example is so slow?
Actually, this is an absolutely stellar problem for my FP workshop.
Correction, the above code actually can generate them in about 0.73 seconds on my machine.
 
11:58 PM
@ngn Using ⍳6⍴16 is a great golf shot. You can tell from my example above that I have a strong concern for performance.
 

« first day (627 days earlier)      last day (2022 days later) »