←2019-02-16 2019-02-17 2019-02-18→ ↑2019 ↑all
00:00:12 -!- Lord_of_Life has quit (Read error: Connection reset by peer).
00:01:17 -!- tromp has quit (Ping timeout: 246 seconds).
00:03:06 -!- Lord_of_Life has joined.
00:35:11 -!- tromp has joined.
00:40:18 -!- tromp has quit (Ping timeout: 272 seconds).
00:55:24 <esowiki> [[Vague]] https://esolangs.org/w/index.php?diff=59900&oldid=59800 * Cortex * (-33)
00:59:05 <esowiki> [[Hexomnia]] https://esolangs.org/w/index.php?diff=59901&oldid=59356 * Cortex * (+35)
01:08:19 -!- Remavas-Hex has joined.
01:11:26 -!- Remavas[AFK] has quit (Ping timeout: 244 seconds).
01:29:00 -!- tromp has joined.
01:33:39 -!- tromp has quit (Ping timeout: 244 seconds).
02:01:41 -!- Remavas-Hex has changed nick to Remavas-Hex[AFK].
02:02:17 -!- Remavas-Hex[AFK] has changed nick to Remavas-.
02:03:43 -!- Remavas- has changed nick to Remavas.
03:07:03 -!- nfd9001 has quit (Read error: Connection reset by peer).
03:13:40 <zzo38> Is there a way to tell Firefox to disable kerning for editable fields?
03:16:23 -!- tromp has joined.
03:20:47 -!- tromp has quit (Ping timeout: 246 seconds).
03:23:51 -!- Remavas has quit (Read error: Connection reset by peer).
03:24:16 -!- Remavas has joined.
03:37:58 -!- Remavas has quit (Quit: Leaving).
04:16:15 <imode> the 4-tuple model of a turing machine is the most natural.
04:41:16 <kmc> how so, and compared to what?
04:42:00 <imode> compared to the 5-tuple model. instead of having (current state, old symbol, new symbol, direction, new state), you have (current state, old smbol, command, new state).
04:42:25 <imode> the 4-tuple model is generalizable to not even include symbols, but 'conditions', which can be defined as boolean functions.
04:43:05 <imode> the general form of an automaton, moving from the 4-tuple model, looks like (current state, condition, next state, command).
04:44:44 <kmc> yeah
04:46:06 <imode> if you were to try to generalize the 5-tuple model to include more actions, the number of states you'd need to accomplish a "no-op" blows up like mad, and in some cases, may not even be possible.
05:04:01 -!- tromp has joined.
05:08:56 -!- tromp has quit (Ping timeout: 258 seconds).
05:30:43 -!- oerjan has quit (Quit: Nite).
05:52:26 -!- FreeFull has quit.
05:57:59 -!- tromp has joined.
06:00:56 <zzo38> I think with the Amycus numbers, length is popcount and head is ctz, isn't it?
06:02:17 -!- tromp has quit (Ping timeout: 255 seconds).
06:30:37 -!- arseniiv has joined.
06:51:25 -!- tromp has joined.
06:55:53 -!- tromp has quit (Ping timeout: 245 seconds).
07:24:15 -!- nfd9001 has joined.
07:36:54 <esowiki> [[Shishkirism]] https://esolangs.org/w/index.php?diff=59902&oldid=59899 * Kamish * (+1814)
08:09:32 -!- arseniiv has quit (Ping timeout: 246 seconds).
08:14:31 <Taneb> `quote Taneb prime memory 3
08:14:32 <HackEso> No output.
08:14:40 <Taneb> `quote before reaching 3
08:14:41 <HackEso> No output.
08:15:10 <Taneb> Anyway, you know yesterday I had a program which lists primes which ran out of memory before reaching 3?
08:15:21 <Taneb> I've made some changes and now it can reach at least 131
08:16:05 <Taneb> I also have a Fractran -> Sed compiler-ish thing
08:16:23 -!- tromp has joined.
08:16:34 <esowiki> [[RELATIONS]] N https://esolangs.org/w/index.php?oldid=59903 * Kamish * (+718) Created page with "<p>'''RELATIONS''' is an esoteric programming language created by [[User:Kamish|Kamish]]</p> <p>This language is absolutely useless and '''has 8 commands:'''</p> {| class="wik..."
08:16:36 -!- tromp has quit (Remote host closed the connection).
08:16:48 -!- tromp has joined.
08:17:28 <esowiki> [[User:Kamish]] https://esolangs.org/w/index.php?diff=59904&oldid=59890 * Kamish * (+18)
08:18:58 <esowiki> [[Joke language list]] M https://esolangs.org/w/index.php?diff=59905&oldid=59889 * Kamish * (+54)
08:31:48 <esowiki> [[Kate]] N https://esolangs.org/w/index.php?oldid=59906 * Kamish * (+647) Created page with "<p>'''Kate''' - esoteric programming language created by [[User:Kamish|Kamish]]</p> <p>The language consists of only one command - Kate</p> {| class="wikitable" |- ! Command !..."
08:31:51 -!- Sgeo_ has joined.
08:34:50 -!- Sgeo has quit (Ping timeout: 250 seconds).
08:35:27 <esowiki> [[Joke language list]] M https://esolangs.org/w/index.php?diff=59907&oldid=59905 * Kamish * (+34)
08:36:00 <esowiki> [[User:Kamish]] M https://esolangs.org/w/index.php?diff=59908&oldid=59904 * Kamish * (+13)
09:02:32 -!- tromp has quit (Remote host closed the connection).
09:07:59 -!- imode has quit (Ping timeout: 246 seconds).
09:10:50 -!- AnotherTest has joined.
09:14:04 -!- arseniiv has joined.
09:16:23 -!- Sgeo_ has quit (Read error: Connection reset by peer).
09:16:51 -!- Sgeo_ has joined.
09:20:22 -!- tromp has joined.
09:33:26 -!- tromp has quit (Remote host closed the connection).
09:38:39 -!- tromp has joined.
09:44:49 <rain1> awesome Taneb!!
11:13:46 <esowiki> [[Special:Log/newusers]] create * Alikberoff * New user account
11:28:32 -!- Sgeo__ has joined.
11:29:32 -!- b_jonas has joined.
11:31:16 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
11:31:16 <b_jonas> zzo38: re Amicus number representation, yes
11:31:36 <b_jonas> Taneb: lol
11:31:49 <b_jonas> should we quote that?
11:31:51 -!- xkapastel has joined.
11:33:15 <b_jonas> `bobadventures http://bobadventures.comicgenesis.com/d/20190216.html
11:33:16 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: bobadventures: not found
11:54:39 <esowiki> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=59909&oldid=59854 * Alikberoff * (+115) /* Introductions */
11:54:51 <esowiki> [[Generic 2D Befunge]] N https://esolangs.org/w/index.php?oldid=59910 * Alikberoff * (+1788) ~~~~
12:00:32 -!- arseniiv has quit (Ping timeout: 246 seconds).
12:02:01 -!- Lord_of_Life_ has joined.
12:03:10 <esowiki> [[Generic 2D Befunge]] https://esolangs.org/w/index.php?diff=59911&oldid=59910 * Alikberov * (+89)
12:03:11 -!- Lord_of_Life has quit (Ping timeout: 255 seconds).
12:04:19 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
12:55:51 -!- arseniiv has joined.
14:14:35 -!- Sgeo__ has quit (Ping timeout: 255 seconds).
14:14:45 -!- Sgeo has joined.
14:42:16 -!- aloril has quit (Remote host closed the connection).
14:44:14 <b_jonas> `help quote
14:44:16 <HackEso> Quotes are just elements of the quantum dilapidated bogosphere. See qdb.
14:44:17 <b_jonas> `help addquote
14:44:18 <HackEso> ​`addquote? ¯\(°​_o)/¯
14:44:22 <b_jonas> `help qdb
14:44:23 <HackEso> qdb is used like: `quote; `quote regexp; `quote id; `addquote ...; `delquote id; `pastequotes regexp; `pastenquotes [n]; see also quoteformat
14:44:24 <b_jonas> `help quote format
14:44:25 <HackEso> ​`quote format? ¯\(°​_o)/¯
14:44:58 <b_jonas> `? quoteformat
14:44:59 <HackEso> quoteformat is: <nick> message; * nick action; two spaces between messages; all elisions marked with [...] other than irrelevant intervening messages; for messages separated by elision, one space on each side, not two.
14:45:24 -!- aloril has joined.
14:45:32 <b_jonas> ``` addquote '<Taneb> Anyway, you know yesterday I had a program which lists primes which ran out of memory before reaching 3?' #https://esolangs.org/logs/2019-02-17.html#lT
14:45:34 <HackEso> 1332) <Taneb> Anyway, you know yesterday I had a program which lists primes which ran out of memory before reaching 3?
15:01:36 <b_jonas> wait wait
15:01:44 <b_jonas> what the fuck, English
15:03:41 <b_jonas> so not only do they have sign /saIn/, signal /"sIgn@l/, but also resign /rI"zaIn/, resignation /rezIg"neIS@n/
15:03:46 <b_jonas> it's crazy
15:03:57 <b_jonas> `? sign
15:03:58 <HackEso> sign? ¯\(°​_o)/¯
15:51:33 -!- xkapastel has quit (Quit: Connection closed for inactivity).
15:52:46 -!- FreeFull has joined.
16:00:33 <esowiki> [[Special:Log/newusers]] create * TheJebForge * New user account
16:03:19 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=59912&oldid=59909 * TheJebForge * (+234)
16:05:00 <esowiki> [[Glutton]] https://esolangs.org/w/index.php?diff=59913&oldid=59856 * CubixThree * (+561) Made some more progress finishing this up.
16:06:02 <esowiki> [[User:TheJebForge]] N https://esolangs.org/w/index.php?oldid=59914 * TheJebForge * (+212) Created page with "I'm TheJebForge, a hobbyist programmer and I know most of the popular programming languages. Favorite languages are C++ and Lua. Joined this community to showcase a language I..."
16:09:32 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=59915&oldid=59859 * TheJebForge * (+13)
16:13:34 <esowiki> [[Minaac]] N https://esolangs.org/w/index.php?oldid=59916 * TheJebForge * (+553) Created page with "== minaac == Minaac (Minaac Is Not An Assembler Clone) is a run-time interpreted programming language capable of recreating Turing Machine making it a turing-complete languag..."
16:19:02 <esowiki> [[Minaac]] https://esolangs.org/w/index.php?diff=59917&oldid=59916 * TheJebForge * (+120)
16:19:26 <esowiki> [[Minaac]] https://esolangs.org/w/index.php?diff=59918&oldid=59917 * TheJebForge * (+21) /* Minaac */
16:21:50 <esowiki> [[Minaac]] https://esolangs.org/w/index.php?diff=59919&oldid=59918 * TheJebForge * (+49)
16:22:18 <esowiki> [[Minaac]] https://esolangs.org/w/index.php?diff=59920&oldid=59919 * TheJebForge * (+4) /* External resources */
16:22:54 <esowiki> [[Minaac]] https://esolangs.org/w/index.php?diff=59921&oldid=59920 * TheJebForge * (+23)
16:24:21 -!- TheJebForge has joined.
16:24:27 <TheJebForge> Hello :D
16:28:13 -!- TheJebForge has quit (Client Quit).
16:31:37 <esowiki> [[Minaac]] https://esolangs.org/w/index.php?diff=59922&oldid=59921 * TheJebForge * (+1)
16:50:45 <b_jonas> [ 30*50
16:50:46 <j-bot> b_jonas: 1500
17:24:06 <esowiki> [[Esoteric data structure]] https://esolangs.org/w/index.php?diff=59923&oldid=44362 * Cortex * (+22)
18:02:06 <esowiki> [[$ $]] https://esolangs.org/w/index.php?diff=59924&oldid=59258 * Cortex * (+43)
18:03:21 <esowiki> [[User:Cortex]] https://esolangs.org/w/index.php?diff=59925&oldid=59806 * Cortex * (+21)
18:04:54 <esowiki> [[Pizza Delivery]] N https://esolangs.org/w/index.php?oldid=59926 * Cortex * (+1577) Created page with "Coming soon: Usefulness {{WIP}} '''Pizza Delivery''' is yet another esolang by [[User:Cortex|]] designed to be similar to the logic of other Cortex languages, but more concise..."
18:12:55 <shachaf> http://dmishin.blogspot.com/2013/11/the-single-rotation-rule-remarkably.html
18:34:40 -!- imode has joined.
18:48:17 <myname> that's interesting
18:52:43 -!- moei has joined.
18:56:29 <esowiki> [[User:TheJebForge]] https://esolangs.org/w/index.php?diff=59927&oldid=59914 * TheJebForge * (+4)
18:56:56 <esowiki> [[Minaac]] https://esolangs.org/w/index.php?diff=59928&oldid=59922 * TheJebForge * (+2) /* Example code */
19:05:39 <esowiki> [[Minaac]] https://esolangs.org/w/index.php?diff=59929&oldid=59928 * TheJebForge * (+239) /* Minaac */
19:05:52 <esowiki> [[Minaac]] https://esolangs.org/w/index.php?diff=59930&oldid=59929 * TheJebForge * (+1) /* Minaac */
19:30:07 <arseniiv> shachaf: thank you!
19:35:17 <b_jonas> `? east port
19:35:18 <HackEso> east port? ¯\(°​_o)/¯
19:50:30 -!- Phantom_Hoover has joined.
19:50:30 -!- Phantom_Hoover has quit (Changing host).
19:50:30 -!- Phantom_Hoover has joined.
20:03:56 <b_jonas> `? gray
20:03:58 <HackEso> Gray is e common misspalling of grey.
20:04:16 <shachaf> `cwlprits gray
20:04:18 <HackEso> oerjän
20:04:25 <shachaf> `? grey
20:04:26 <HackEso> grey? ¯\(°​_o)/¯
20:14:46 <int-e> . o O ( Let's not make an entry on Grey codes. )
20:14:54 <b_jonas> `? fuchsia
20:14:55 <HackEso> fuchsia? ¯\(°​_o)/¯
20:15:02 <b_jonas> ```
20:15:03 <HackEso> bash: -c: option requires an argument
20:15:30 <b_jonas> ``` for c in sc cs csh sch sh ch; do \? fu"$c"ia; done
20:15:33 <HackEso> fuscia? ¯\(°​_o)/¯ \ fucsia? ¯\(°​_o)/¯ \ fucshia? ¯\(°​_o)/¯ \ fuschia? ¯\(°​_o)/¯ \ fushia? ¯\(°​_o)/¯ \ fuchia? ¯\(°​_o)/¯
20:15:57 <int-e> `wrl
20:15:58 <HackEso> https://hack.esolangs.org/repo/file/tip/wisdom
20:16:44 <int-e> `cwlprits pokemon red
20:16:45 <HackEso> rdocöc
20:18:13 <shachaf> Who was the person who was against cwlprits and dowg and grWp and all those things?
20:18:24 <shachaf> I feel like there was one (other than b_jonas) but now everyone's using them.
20:21:44 <int-e> I have troulbe with the etymology of things like `doag.
20:22:22 <int-e> And I have troulbe with spelling, apparently.
20:22:34 <b_jonas> shachaf: I'm not specifically against them
20:22:52 <b_jonas> I just feel like everyone should be allowed to use whatever tools they want, and judged by their results regardless of their tools
20:23:20 <b_jonas> this should apply for programming languages too: if you write useful stuff in java or php, that's fine, it's your problem if you have to wrestle with the language during, not mine as a user
20:23:51 <b_jonas> i.e. I prefer Mediawiki over other wikis, even if Mediawiki is the one using php
20:23:55 <int-e> But if you use javascript and burden me with electron then I will complain.
20:23:57 <int-e> :P
20:25:34 <b_jonas> same for editors and even IDEs
20:32:17 <Lymia> I do think there's a limit to this idea.
20:32:39 <Lymia> Like... given a network facing C program, I expect it to have a 100% chance of having latent undiscovered memory unsafety, of a type that is potentially exploitable
20:33:08 <Lymia> Tools can well be inapproprate in ways the user cares about
20:33:13 -!- ais523 has joined.
20:33:27 <ais523> @messages?
20:33:27 <lambdabot> Sorry, no messages today.
20:34:03 <shachaf> int-e: Do you want to rename these things?
20:34:15 <zzo38> Is there some way to tell the "uuid" program to use a different MAC address?
20:34:25 <shachaf> I think maybe there could be a better system than encoding subsets of behaviors people care about in the command name.
20:34:28 <int-e> shachaf: no!
20:34:52 <int-e> shachaf: don't rename these, please
20:35:18 <int-e> that'll just cause even more confusion
20:35:20 <shachaf> It's been a few years. People are too used to the existing names.
20:36:19 -!- Lymia has quit (Quit: Hugs~ <3).
20:37:11 <zzo38> (I suppose it isn't difficult to just edit the resulting UUID to put in a different MAC address)
20:38:28 -!- callforjudgement has joined.
20:38:30 -!- ais523 has quit (Ping timeout: 250 seconds).
20:38:49 -!- callforjudgement has changed nick to ais523.
20:40:59 <b_jonas> hello ais
20:41:48 <b_jonas> so I found out that there are like eight M:tG cards, even not counting the silver-bordered ones, that make other players make choices while you're casting a spell
20:43:02 <b_jonas> they're old, but have some reprings
20:43:48 <b_jonas> ``` card-by-name Arena # is one of them
20:43:49 <HackEso> Arena \ Land \ {3}, {T}: Tap target creature you control and target creature of an opponent's choice they control. Those creatures fight each other. (Each deals damage equal to its power to the other.) \ PROMO-S, TSP-S \ \ Arena Athlete \ 1R \ Creature -- Human \ 2/1 \ Heroic -- Whenever you cast a spell that targets Arena Athlete, target creature an opponent controls can't block this turn. \ THS-U \ \ Arena of the Ancients \ 3 \ Artifact \ Legendary cre
20:44:58 <b_jonas> ``` card-by-name Evangelize # is a new one in TSP
20:44:58 <HackEso> Evangelize \ 4W \ Sorcery \ Buyback {2}{W}{W} (You may pay an additional {2}{W}{W} as you cast this spell. If you do, put this card into your hand as it resolves.) \ Gain control of target creature of an opponent's choice they control. \ TSP-R
20:48:13 <b_jonas> now I don't know how casting spells work, and have to read the comp rules
20:48:34 <zzo38> I do know how it work; I have read the rules
20:51:26 <zzo38> First modes are chosen, and then targets, and then the cost is determine, and then the mana step if applicable, and then the cost is paid.
20:54:28 -!- Lymia has joined.
20:54:37 <b_jonas> zzo38: can the opponent's choice of targets, or any choices by other players during the mana abilities part, change whether the caster can pay the costs of the spell?
20:55:13 <b_jonas> And I mean without silver-bordered cards
20:55:28 <b_jonas> because with Gleemax that could happen, but let's exclude Gleemax now as it's silver-bordered
20:56:00 <zzo38> I think there are some cards with effects that might do that (even not counting silver bordered) (although I do not quite remember all of the cards)
20:56:17 <ais523> this doesn't seem any more broken than Selvala
20:56:50 <ais523> I assume you'd just have to rewrite if an opponent chose a target which meant you couldn't afford to pay the costs of the spell
20:56:54 <ais523> *rewind
20:57:19 <zzo38> (I think some cards increase the cost for targeting them)
20:57:29 <ais523> yes
20:57:41 <zzo38> (I do not remember which ones.)
20:58:09 <b_jonas> `card-by-name Selvala, Explorer Returned
20:58:10 <HackEso> Selvala, Explorer Returned \ 1GW \ Legendary Creature -- Elf Scout \ 2/4 \ Parley -- {T}: Each player reveals the top card of their library. For each nonland card revealed this way, add {G} and you gain 1 life. Then each player draws a card. \ CNS-R, C16-R, VMA-R
20:58:15 <ais523> it's tricky, some cards like that counter the spell unless a cost is paid, rather than actually increasing the cost
20:58:26 <ais523> b_jonas: the great thing is, that's a mana ability
20:58:40 <b_jonas> ouch
20:58:57 <ais523> so you can attempt to use it to pay for a spell, and then discover you don't have enough mana
20:58:59 <zzo38> Yes, it is a mana ability which reveals cards from a library
20:59:10 <b_jonas> why don't we have rules managers that can rein Wizards in when they have such ideas?
20:59:11 <ais523> and you can't rewind because the cards from the library have already been seen
20:59:13 <zzo38> And conditionally adds mana based on that
20:59:26 <b_jonas> that can't even work
20:59:44 <ais523> it clearly doesn't work but the rules managers have been reluctant to change it
21:00:13 <b_jonas> isn't there a rule that if something would reveal hidden cards while casting a spell, they're instead revealed only later, after casting the spell? or is that only for _drawing_ cards specifically?
21:00:26 <zzo38> I think only for drawing cards
21:00:43 <ais523> right, you draw them face down
21:00:50 <ais523> but that doesn't help with Selvala because they're explicitly revealed
21:00:58 <b_jonas> so
21:01:15 <ais523> they should really just have put "play this ability only any time you could play an instant" on there
21:01:19 <zzo38> http://zzo38computer.org/textfile/miscellaneous/magic_card/puzzle.7
21:01:24 <ais523> or at least day-1-errata'd it to that
21:01:28 <ais523> but for mysterious reasons, they didn't
21:01:32 <zzo38> ais523: Yes, that would help
21:01:46 <b_jonas> if a morph of an opponent dies during the mana ability part of casting a spell, you'll just learn what it is immediately, even if casting the spell may have to be rewound?
21:02:10 <ais523> I assume that can happen, although I can't think of a way to do it offhand
21:02:44 <ais523> I guess you could have stolen it, and sacrificed it to Phyrexian Altar, but then you'd legally be allowed to look at it so it'd only matter in multiplayer
21:03:25 <b_jonas> ais523: just copy a Wild Cantor on it
21:03:34 <b_jonas> um
21:03:38 <b_jonas> that would be your own morph then
21:03:41 <ais523> right
21:03:55 <zzo38> Do you like my puzzle?
21:04:10 <ais523> killing an opponent's creature at mana ability speed is hard because you can't use triggered abilities
21:04:15 <b_jonas> yeah
21:04:28 <ais523> hmm, are there any global toughness boosts in the game? I think there are, right?
21:04:33 <b_jonas> ais523: worse still, you can't even use toughness reduction because SBAs won't kick in
21:04:39 <ais523> oh right, SBAs
21:04:51 <ais523> so you'd have to kill directly
21:05:30 <ais523> zzo38: seeing a Panglacial Wurm there worries me
21:05:44 <b_jonas> man, this was easier when I could just search for "pool" to find every mana ability
21:06:25 <ais523> is "add" used in other contexts?
21:06:38 <b_jonas> you newfangled youths with your intuitive "dies" and "create [token]" and "add [mana]" phrasing, back when I was young we had to write rules text uphill both ways in the snow
21:06:41 <b_jonas> ais523: yes
21:06:51 <b_jonas> `random-card \badd\b
21:06:51 <HackEso> Shefet Dunes \ Land -- Desert \ {T}: Add {C}. \ {T}, Pay 1 life: Add {W}. \ {2}{W}{W}, {T}, Sacrifice a Desert: Creatures you control get +1/+1 until end of turn. Activate this ability only any time you could cast a sorcery. \ HOU-U
21:06:56 <b_jonas> nope, not that
21:07:09 <b_jonas> hmm
21:08:21 <b_jonas> ais523: you might be right, maybe it doesn't occur elsewhere
21:08:33 <b_jonas> it might even be better than "pool" because "pool" occurs in some card names
21:09:26 <zzo38> If "add" is used in other contexts, they would presumably say where to add it to, and you would be adding something other than mana, anyways
21:11:56 <ais523> zzo38: with your puzzle, can't you just win by discarding a card to Skirge Familiar and attacking with everything?
21:12:02 <ais523> AFAICT the opponent can't block and you do 4 damage
21:12:28 <b_jonas> ais523: and Simian Spirit Guide makes it very easy to have cases where you start casting a spell without being able to pay its costs but the opponent doesn't know that for sure
21:13:15 <zzo38> ais523: Maybe, although it is not intention. I will look to see if it is or not
21:13:15 <ais523> I don't think that in general it's possible to always be able for an opponent to know in advance how much mana you can generate
21:13:21 <zzo38> (It can be fixed if necessary)
21:16:23 <zzo38> ais523: I don't think you can win like that? You can do only 3 damage, isn't it?
21:16:48 <ais523> zzo38: lhurgoyf does one for the discarded instant/sorcery in your graveyard, skirge familiar does 3
21:17:03 <ais523> anafenza only prevents creature cards going to the graveyard and has no impact on instants and sorceries
21:17:16 <ais523> or, wait, does lhurgoyf only count creatures?
21:17:35 <ais523> ah right, only counts creatures
21:17:46 <b_jonas> `card-by-name Metalworker
21:17:47 <HackEso> Metalworker \ 3 \ Artifact Creature -- Construct \ 1/2 \ {T}: Reveal any number of artifact cards in your hand. Add {C}{C} for each card revealed this way. \ UD-R
21:18:25 <zzo38> Yes, Lhurgoyf only counts creatures.
21:19:24 <ais523> I suspect the panglacial wurm is a red herring as none of your cards appear to search, it's probably just there to be an arbitrary creature
21:19:47 <b_jonas> hmm, let me look
21:21:48 <b_jonas> ais523: would zzo38 really do that in a puzzle? adding such an irrelevant element?
21:22:37 <ais523> I don't know
21:22:37 <b_jonas> maybe he would
21:22:49 <ais523> different puzzle setters have different styles but I don't know what zzo38's is
21:22:51 <b_jonas> yeah, it doesn't look like anything searches there. not even a search land.
21:23:41 -!- arseniiv has quit (Ping timeout: 246 seconds).
21:26:22 <ais523> I don't think zzo38's puzzle is solvable as you can't get rid of the anafenza or the lab maniac, and can't cast the panglacial wurm even after drawing it, thus you can't get more than 3 power on the field and can't win by any alternate win condition, also there's no way to stop the opponent winning next turn
21:26:25 <ais523> although I might have missed something
21:27:46 <zzo38> I think once someone found the intended solution but was unsure if it was valid or not, and they are a judge of Magic: the Gathering.
21:29:36 <ais523> well, chromatic sphere draws a card at mana ability speed, and I'm pretty sure that's part of the solution
21:29:49 <zzo38> Yes
21:30:37 <ais523> I'm guessing the intended solution is something along the lines of "cast panglacial wurm from your library, but draw it while you're casting it so that it isn't there, and something goes wrong during the rewind"
21:30:50 <ais523> but I can't see a way to do the first step as none of the cards you have search your library
21:31:35 <zzo38> No, that isn't it
21:32:03 <zzo38> You do not have to rewind.
21:33:10 <ais523> panglacial wurm isn't castable as it has GG in its cost and you can only generate one green mana
21:33:45 <b_jonas> what?
21:33:58 <ais523> hmm, does the intended solution involve attempting to cast panglacial wurm while casting opt? because that isn't legal
21:33:59 <b_jonas> draw it while you're casting it?
21:34:02 <b_jonas> how would that even work?
21:34:10 <zzo38> ais523: No, it doesn't involve that
21:34:21 <zzo38> I said it does not involve rewinding
21:34:24 <ais523> hmm, at what point does a card go to the stack while you're casting it? probably before you pay costs
21:34:34 <b_jonas> isn't it on the stack and no longer in your library while you're casting it?
21:34:39 <b_jonas> ais523: very early
21:35:20 <b_jonas> see rule 601.2a
21:35:46 <ais523> let's see, my problem here is that you can trivially draw panglacial wurm, but I don't think you can do anything else with it
21:35:58 <zzo38> Putting it on the stack is the first step before deciding modes.
21:36:06 <ais523> oh, you can discard it into exile, but that doesn't seem to help either
21:36:27 <b_jonas> ``` grep '^601\.2a' share/mtg/rules.txt
21:36:27 <HackEso> 601.2a To propose the casting of a spell, a player first moves that card (or that copy of a card) from where it is to the stack. It becomes the topmost object on the stack. It has all the characteristics of the card (or the copy of a card) associated with it, and that player becomes its controller. The spell remains on the stack until it's countered, it resolves, or an effect moves it elsewhere.
21:37:09 <ais523> I'm amused at the way you quoted the . there
21:37:15 <ais523> I guess it makes the grep run fasteR?
21:37:35 <b_jonas> I didn't do it to make gerp run faster
21:37:42 <ais523> false positives seem unlikely
21:37:56 <ais523> `` grep ^601.2a share/mtg/rules.txt
21:37:57 <HackEso> 601.2a To propose the casting of a spell, a player first moves that card (or that copy of a card) from where it is to the stack. It becomes the topmost object on the stack. It has all the characteristics of the card (or the copy of a card) associated with it, and that player becomes its controller. The spell remains on the stack until it's countered, it resolves, or an effect moves it elsewhere.
21:37:57 <b_jonas> the running speed is insignificant because the network lag is bigger
21:38:02 <b_jonas> I just find it dirty to not quote it
21:38:31 <b_jonas> and I need a caret or it will find an earlier line, so I can't just -F it, and -w or -x doesn't help
21:40:00 <ais523> I actually have an alias to do a recursive search for a particular string at the start of a line, but it doesn't quote it
21:40:18 <ais523> (it does some other things, though, like opening the found result in less)
21:40:36 <ais523> the idea is to quickly jump to a function in code that uses an indentation style which places newlines before function names in their definintions
21:41:34 <b_jonas> and it wouldn't be too strange to have an alias in HackEso that displays a particular rule
21:41:41 <b_jonas> by number
21:41:50 <b_jonas> IIRC the Yawgatog bot has that feature
21:41:56 <ais523> my most commonly used alias, though, is one called "l" which does ls on directories, ls on . if given no arguments, and less on regular files
21:42:04 <b_jonas> the tricky part is that some rules really don't fit in an irc line
21:42:21 <rain1> what if dwarf fortress w as an anime
21:42:40 <zzo38> Also you should fix so that the cards do not have reminder text. This solves two problems, one is it makes searching better to omit reminder text, and other is that it is less likely to go over the maximum length of the IRC text if the reminder text is omitted.
21:42:43 <ais523> I'm finding it hard to visualise what an anime dwarf would look like
21:43:17 <b_jonas> `card-by-name Elven Fortress
21:43:18 <HackEso> Elven Fortress \ G \ Enchantment \ {1}{G}: Target blocking creature gets +0/+1 until end of turn. \ FE-C
21:44:04 <b_jonas> zzo38: I told you already, fix that yourself if you want
21:44:39 <zzo38> b_jonas: O, OK.
21:44:54 <ais523> `card-by-name duh
21:44:55 <HackEso> Duh \ B \ Instant \ Destroy target creature with reminder text. (Reminder text is any italicized text in parentheses that explains rules you already know.) \ UNH-C
21:45:19 <ais523> detecting reminder text might be quite hard
21:45:23 <b_jonas> I for one like the reminder text, because I can't remember all 136 keyword abilities
21:45:32 <ais523> perhaps opening paren followed by capital letter is a reliable way to detect it?
21:45:45 <b_jonas> ais523: why? are there other parenthesis in the rules text part?
21:45:57 <ais523> I think so, not sure though
21:46:03 <zzo38> As far as I know the parentheses are not used for anything else other than reminder text
21:46:12 <ais523> `` cat bin/card-by-name
21:46:13 <HackEso> ​#!/bin/sh \ exec perl -e 'open$I,"<","/hackenv/share/mtg/allsets.txt"or die;$/=""; while(<$I>){/\A(?i)\Q$ARGV[0]/ and print}' "$1"
21:46:33 <b_jonas> now that looks ugly
21:46:50 <ais523> what's \A? start of a line?
21:46:55 <b_jonas> ais523: start of the string
21:47:09 <b_jonas> which in this case is more than a line
21:47:10 <ais523> oh right, the while already splits it into lines
21:47:11 <b_jonas> it's a whole card
21:47:17 <b_jonas> ais523: no, it splits it to paragraphs
21:47:24 <b_jonas> and there's one paragraph per card
21:47:26 <b_jonas> (ideally)
21:47:34 <ais523> oh, I missed the override of $/
21:48:41 <ais523> `` grep '([a-z]' /hackenv/share/mtg/allsets.txt
21:48:42 <HackEso> 3(r/p)(r/p) \ ({(r/p)} can be paid with either {R} or 2 life.) \ When Aether Chaser enters the battlefield, you get {E}{E} (two energy counters). \ When Aether Herder enters the battlefield, you get {E}{E} (two energy counters). \ When Aether Hub enters the battlefield, you get {E} (an energy counter). \ When Aether Inspector enters the battlefield, you get {E}{E} (two energy counters). \ When Aether Meltdown enters the battlefield, you get {E}{E} (two ene
21:48:52 <b_jonas> ah!
21:48:57 <b_jonas> although that's in a mana cost
21:49:04 <b_jonas> you'll have to find one in a rule text
21:49:09 <b_jonas> but it's close enough
21:49:17 <ais523> do we count the energy counter counting text as reminder text?
21:49:23 <b_jonas> in the yawgatog allsets dump, it's not even trivial to find which lines are mana costs
21:49:53 <ais523> `card-by-name graven cairns
21:49:54 <HackEso> Graven Cairns \ Land \ {T}: Add {C}. \ {(b/r)}, {T}: Add {B}{B}, {B}{R}, or {R}{R}. \ FUT-R, SHM-R, EXP-M, IMA-R
21:50:00 <ais523> there we go
21:50:06 <b_jonas> ais523: yes. it's printed with parens in italic on the card, so it's reminder text.
21:50:28 <ais523> ``` grep '([a-z]' /hackenv/share/mtg/allsets.txt | grep -v energy
21:50:29 <HackEso> 3(r/p)(r/p) \ ({(r/p)} can be paid with either {R} or 2 life.) \ 3(w/u) \ Whenever Alesha, Who Smiles at Death attacks, you may pay {(w/b)}{(w/b)}. If you do, return target creature card with power 2 or less from your graveyard to the battlefield tapped and attacking. \ Your opponents can't cast spells with the chosen name (as long as this creature is on the battlefield). \ 1(w/p) \ ({(w/p)} can be paid with either {W} or 2 life.) \ Cycling {(u/b)} ({(u/b)
21:50:47 <ais523> ``` grep '([a-z]' /hackenv/share/mtg/allsets.txt | grep -v energy | grep -v '([a-z]/[a-z])'
21:50:48 <HackEso> Your opponents can't cast spells with the chosen name (as long as this creature is on the battlefield). \ Pursuant to subsection 3.1(4) of Richard's Rules of Order, at the beginning of the upkeep of each participant in this game of the Magic: The Gathering(R) trading card game (hereafter known as "PLAYER"), that PLAYER performs all actions in the sequence of previously added actions (hereafter known as "ACTION QUEUE"), in the order those actions were added
21:50:59 <Taneb> `quote before finding 3
21:50:59 <HackEso> 1331) <Taneb> ...this is the first prime number finder I've ever written which ran out of memory before finding 3
21:51:16 <Taneb> `quote before reaching 3
21:51:17 <HackEso> 1332) <Taneb> Anyway, you know yesterday I had a program which lists primes which ran out of memory before reaching 3?
21:51:21 <ais523> the first hit there is reminder text, the secondd surely has to be an uncard (and isn't reminder text)
21:51:29 <b_jonas> oh darn
21:51:35 <Taneb> I'm not sure both of these are necessary
21:51:43 <b_jonas> I added the latter one
21:52:08 <Taneb> And shachaf added the first one
21:52:14 <b_jonas> `? delquote
21:52:16 <HackEso> delquote? ¯\(°​_o)/¯
21:52:16 <b_jonas> `? rmquote
21:52:17 <HackEso> rmquote? ¯\(°​_o)/¯
21:52:17 <b_jonas> `? quote
21:52:19 <HackEso> Quotes are just elements of the quantum dilapidated bogosphere. See qdb.
21:52:22 <b_jonas> `? ddb
21:52:23 <HackEso> ddb? ¯\(°​_o)/¯
21:52:24 <b_jonas> `? qdb
21:52:25 <HackEso> qdb is used like: `quote; `quote regexp; `quote id; `addquote ...; `delquote id; `pastequotes regexp; `pastenquotes [n]; see also quoteformat
21:52:30 <b_jonas> `delquote 1332
21:52:32 <HackEso> ​*poof* <Taneb> Anyway, you know yesterday I had a program which lists primes which ran out of memory before reaching 3?
21:57:03 <Taneb> I had a lot of fun with that dumb idea
21:57:24 <Taneb> Tomorrow I'll try to finish my previous dumb idea, a brainfuck interpreter written in jq
21:59:13 <b_jonas> what's jq?
22:01:03 <imode> iirc, a command line tool to query json.
22:03:49 <ais523> is this one of those "accidentally Turing-complete" situations?
22:04:27 -!- Remavas has joined.
22:09:10 <b_jonas> hmm. dumb question. if I'm mindslaving my opponent, and I'm casting Evangelize (through Vedalken Orrery), then am I required to choose Standard Bearer as the target for the Evangelize?
22:10:29 <b_jonas> 601.2c doesn't even mention the case of spells like Arena or Evangelize that I was talking earlier, which make another player than the caster choose targets during casting a spell
22:10:42 <ais523> I don't think so; you're making decisions for your opponent, and your opponent wouldn't be constrained in making them
22:10:45 <ais523> but it's an interesting semantic point
22:11:18 <b_jonas> `card-by-name Standard Bearer
22:11:18 <HackEso> Standard Bearer \ 1W \ Creature -- Human Flagbearer \ 1/1 \ While choosing targets as part of casting a spell or activating an ability, your opponents must choose at least one Flagbearer on the battlefield if able. \ AP-C
22:11:53 <b_jonas> no wait
22:12:01 <b_jonas> that's not the current oracle text
22:12:10 <b_jonas> the current rules text is: While an opponent is choosing targets as part of casting a spell they control or activating an ability they control, that player must choose at least one Flagbearer on the battlefield if able.
22:12:36 <ais523> oh, so it got oracled to solve the problem
22:12:41 <b_jonas> no
22:12:50 <b_jonas> I was reading that current oracle text and asked the question after that
22:12:53 <b_jonas> it's still a problem
22:13:13 <b_jonas> I should have realized I shouldn't ask card-by-name for this, because I knew this got lots of erratas
22:13:23 <ais523> oh right, evangelize is a spell you control
22:13:44 <b_jonas> yes, and the opponent controls the flagbearer in this situation
22:15:56 <ais523> M:tG's rules probably don't work
22:16:13 <ais523> but they work well enough when people aren't intentionally setting up ridiculous situations
22:16:17 <ais523> `card-by-name Dominating Licid
22:16:18 <HackEso> Dominating Licid \ 1UU \ Creature -- Licid \ 1/1 \ {1}{U}{U}, {T}: Dominating Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect. \ You control enchanted creature. \ EX-R
22:16:46 <ais523> that card didn't work at all for quite a while (due to layers issues), there was something of a community protest asking for errata or rules changes to make it work again
22:16:50 <b_jonas> ais523: not only that, I think you can make houserules that make them work and that are close enough to M:tG rules that the difference won't come up in real games
22:17:04 <ais523> eventually it happened, before then there were ruling saying that it worked but not explaining why
22:18:01 <b_jonas> I still don't understand how linked abilities work, there are several reasonable ways they could be fixed, and I should probably ask the knowledgable people (judges) on scryfall how they work
22:18:58 <Taneb> ais523: jq has enough in it that it's almost certainly TC
22:20:22 <Taneb> And, like, not by half measures
22:20:46 <Taneb> Something Underload-like would probably be easier to implement in it than BF
22:22:12 <Taneb> And now I ought to sleep
22:22:12 <ais523> just do Cyclic Tag or The Waterfall Model, we have easier languages than BF nowadays :-)
22:23:48 <Taneb> Yeah, but they're harder to show off to people outside this channel
22:23:55 * Taneb away
22:25:23 <b_jonas> you want achievements that you can put on your cv?
22:25:30 <ais523> hmm, and I go to all this trouble writing a tutorial and interactive interpreter and optimizing interpreter for The Waterfall Model precisely so that I can show it off to people outside the channel…
22:33:32 <b_jonas> wait
22:33:55 <b_jonas> ``` grep -n '^601\.2d' share/mtg/rules.txt
22:33:55 <HackEso> 2069:601.2d If the spell requires the player to divide or distribute an effect (such as damage or counters) among one or more targets, the player announces the division. Each of these targets must receive at least one of whatever is being divided.
22:34:53 <b_jonas> That's still a rule in un-land? You can't The Ultimate Nightmare half a damage into a creature?
22:36:49 <zzo38> I don't know
22:38:02 <b_jonas> mind you, that applies only to spells. afaik there's no such rule for combat damage, a Gorgon can kill blocked creatures with half a damage each
22:56:05 <zzo38> I am not even so sure the Un-cards rules are all as well defined anyways, but I might assume that rule 601.2d still applies with a minimum of 1 (but that unlike normal game you can still do one and a half)
22:56:22 <zzo38> And that, yes for combat damage rule 601.2d is not applicable
23:01:18 -!- AnotherTest has quit (Ping timeout: 245 seconds).
23:04:36 <b_jonas> zzo38: the rules for some un-cards are definitely not well-defined. but the un-rule that doesn't require any cards, which allows half-integers as numbers, I think that one is definable, and there are also a lot of un-cards that are easy to support because they don't do anything really rule-breaking
23:05:14 <b_jonas> I mean supportable comp-rules-wise obviously, not that they should be allowed in a tournament or make a pleasant game
23:05:31 <zzo38> OK
23:05:36 -!- xkapastel has joined.
23:05:48 <b_jonas> well, there are some problems with the half-integer rule too
23:06:09 <b_jonas> there are a few places where you're required to round to an integer, and that definitely mustn't be done the way MaRo says it should be done
23:06:14 <b_jonas> his un-rules are just bullshit
23:06:23 <b_jonas> but he's not the rules manager, he's only the un-rules manager
23:07:34 <zzo38> Yes, I agree with those stuff
23:07:47 <zzo38> You are correct about those stuff
23:08:02 <b_jonas> so there has to be a house rule that you round down in those cases
23:09:09 <b_jonas> `card-by-name Disciple of the Phenax
23:09:10 <HackEso> No output.
23:09:36 <b_jonas> `card-by-name Disciple of Phenax
23:09:37 <HackEso> Disciple of Phenax \ 2BB \ Creature -- Human Cleric \ 1/3 \ When Disciple of Phenax enters the battlefield, target player reveals a number of cards from their hand equal to your devotion to black. You choose one of them. That player discards that card. (Each {B} in the mana costs of permanents you control counts toward your devotion to black.) \ THS-C
23:09:54 <zzo38> Some of my Un-cards won't work for some reason, too.
23:12:03 <b_jonas> eg. if you have a Little Girl, you can have a non-integer devotion to white; then if you play Disciple of Phenax with Sleight of Mind to change "black" to "white" in it, you'll have to round that devotion to an integer
23:12:54 <b_jonas> there should be a more convincing example somewhere, since Little Girl is silver-bordered, and it's not even clear how devotion is defined
23:13:19 <b_jonas> maybe it still counts the symbol for half a mana as one mana symbol
23:13:21 <zzo38> Yes, I know that. But, in that case you have to reveal half of a card
23:13:42 <b_jonas> like how a hybrid or phyrexian mana symbol still counts as one
23:14:06 <zzo38> b_jonas: Yes, although those are a full mana of that color, not only half of a mana
23:14:41 <b_jonas> `card-by-name Grisly Spectacle
23:14:42 <HackEso> Grisly Spectacle \ 2BB \ Instant \ Destroy target nonartifact creature. Its controller puts a number of cards equal to that creature's power from the top of their library into their graveyard. \ GTC-C, MM3-C, IMA-C, DDM-C
23:15:12 <b_jonas> ^ that's a bit better, though we still have to find a way to give a creature non-integer power with the un-rule but without a silver-bordered card
23:15:35 <b_jonas> and I'm not sure that's possible
23:17:28 <zzo38> Maybe with X spells it might be?
23:18:08 <b_jonas> zzo38: yeah, cast Mind Spring with X set to half
23:18:34 <b_jonas> but that's not a nice enough example for some reason
23:19:17 <b_jonas> you have to be deliberately doing that, and while there could be good reasons, e.g. because some counterspells care about the cmc of the spell and for an X spell the chosen value of X changes that, it's still a bit artificial
23:20:04 <zzo38> Dealing with a fractional number of cards is difficult, but dealing with a fractional number of counters seems like more possible to implement.
23:20:33 -!- copumpkin has joined.
23:21:07 <b_jonas> oh
23:21:17 <b_jonas> `cars-by-name Consume Spirit
23:21:17 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: cars-by-name: not found
23:21:20 <b_jonas> no wait
23:21:40 <b_jonas> `card-by-name Damnable Pact
23:21:41 <HackEso> Damnable Pact \ XBB \ Sorcery \ Target player draws X cards and loses X life. \ DTK-R, C17-R
23:22:20 <b_jonas> ^ you may want the opponent lose half a life, since there are other cases when you deal a non-integer amount of damage to them, e.g. when you attack with a deathtouch trample creature
23:22:37 <b_jonas> then you have to round down the number of cards they draw
23:23:11 <b_jonas> I guess you'd have to spend the other half mana to another X spell
23:23:19 <b_jonas> not too likely to come up, but it's convincing enough for me
23:23:41 <b_jonas> zzo38: yeah, that's more tricky, you have to think whether you want to allow half a +1/+1 counter or half a poison counter
23:24:05 <zzo38> I think half of a +1/+1 counter or half of a poison counter will work fine if the rules allow it.
23:24:39 <b_jonas> especially with infect and wither being out there
23:25:47 <b_jonas> oh
23:25:53 <b_jonas> `card-by-name swans of bryn argoll
23:25:54 <HackEso> Swans of Bryn Argoll \ 2(w/u)(w/u) \ Creature -- Bird Spirit \ 4/3 \ Flying \ If a source would deal damage to Swans of Bryn Argoll, prevent that damage. The source's controller draws cards equal to the damage prevented this way. \ SHM-R, MM2-R
23:26:03 <b_jonas> I shouldn't have forgotten about that one
23:26:10 <b_jonas> that's the most obvious way when this can come pu
23:26:24 <b_jonas> just have a gorgon deal half a damage to a blocking Swan
23:26:46 <b_jonas> the remaining half, after it deals half to a creature that doesn't prevent it, that is
23:27:29 <zzo38> (Some of my Un-cards use numbers other than integers and one half, such as "Math Wizard")
23:28:25 <b_jonas> what Math Wizard?
23:28:29 <b_jonas> oh, your un-cards
23:28:33 <b_jonas> um
23:30:16 <b_jonas> well, Infinity Elemental, an un-card from Unstable, also uses a number other than half-integers
23:30:25 <b_jonas> and the rules have some trouble supporting that one
23:30:48 <b_jonas> I for one don't know how to suppor that consistently, and just chalk it down to an un-card that would never really work with the rules
23:32:02 <zzo38> Yes, some Un-cards won't work so well (and some of mine work even less well than that, although some can work)
23:34:05 <zzo38> Some technically can work, although are unlikely to do much. But, Archaic Tome works as badly like R&D's Secret Lair, I think.
23:36:12 <zzo38> Some of them work differently now (or no longer work) due to rule changes (Homarid Confusion Chamber) or Un-cards rules changes (Death Smith).
23:37:16 -!- Remavas has changed nick to Remavas[AFK].
23:38:29 <zzo38> Wheel of Hand-cutting works, although the reminder text is wrong (but can be ignored).
23:41:10 <b_jonas> even Unhinged, the best un-set, has cards that work just fine with the comp-rules without any modification, they're just un-cards for reasons other than that. examples are Johnny, Combo Player; Mise; Togglodyte; Utabi Kong. Even Rocket-Powered Turbo Slug could work fine if its text was errataed to say what it wants to say. Who would be easy to fix.
23:41:16 <b_jonas> drat
23:42:27 <zzo38> Yes, that is true some are work with ordinary rules
23:43:55 <b_jonas> the drat was that the bulb in the ceiling lamp burned out. and that realized what I wanted to ask ais
23:44:48 <zzo38> (Irrational Zappers (another of my Un-cards) also uses numbers other than integers and half)
23:46:28 <b_jonas> ais523: https://esolangs.org/logs/2019-02.html#l2lb
23:48:31 <b_jonas> ais523: basically, last time we talked about words like "divisor" and "quotient" and "factor" and "product", so now I was asking about what words there are like "addition, subtraction, multiplication, division, conjunction, disjunction"
23:48:56 <b_jonas> and in particular how you'd call a min or max operation
23:49:59 <b_jonas> and tried to come up with possible new terms like "contraction, extension" for min and max, "masonry, carpentry" for floor and ceil.
23:50:28 <ais523> b_jonas: for min, I sometimes use "cap" / "cap at" / "capping"
23:50:37 <ais523> as that's what it does if you see it as asymmetrical
23:50:38 <b_jonas> ais523: that could work, yes
23:50:54 <b_jonas> ... some things called min are assymetrical, yes
23:51:06 <b_jonas> I prefer the symmetrical ones, but programming languages and cpus prefer the assymetrical ones
23:51:17 <ais523> I mean, + and × are being seen as asymmetrical with this terminology
23:51:21 <ais523> I don't really consider NaN behaviour to be relevant
23:51:27 <ais523> are there any other asymmetrical cases for min/max?
23:51:44 <b_jonas> ais523: no, but you have to be careful what you mean by nan behavior
23:51:53 <b_jonas> with min/max, it's not just what nan representation you get as the result
23:52:13 <ais523> but whether you get the NaN at all or the other operand
23:52:14 <b_jonas> it's that in some cases min(nan, 2.0) is 2.0 but min(2.0, nan) is nan
23:52:31 <b_jonas> or backwards
23:52:36 <ais523> the consistent behaviour would be to output the NaN you were given as argument, when you were given exactly one NaN, but that's inefficient
23:52:45 <b_jonas> that kind of assymetry is painful, but it's specifically what some of the definitions require or what cpus implement
23:53:19 <b_jonas> ais523: well, you could have more than one nice behavior, and one of them is that of the C fmin/fmax functions, which returns the other argument if one of them is a nan
23:53:22 <ais523> most definitions of min don't take into account the possibility that !(a < b) and !(a > b) don't necessarily together imply a == b
23:53:44 <ais523> hmm, what does <=> do with NaN?
23:54:07 <b_jonas> ais523: yeah, they're assymetric for that too, min(0.0, -0.0) can be different from min(-0.0, 0.0)
23:54:18 <b_jonas> and in fact will be different in the cpu operation
23:54:22 <b_jonas> because fuck you sse
23:54:42 <ais523> oh, I forgot about -0
23:54:45 <ais523> although, -0 == 0
23:54:52 <b_jonas> ais523: yes, they are equal
23:54:56 <ais523> they're just not the /same/, despite being equal
23:54:58 <b_jonas> which is why you get an assymetric operation
23:55:05 <b_jonas> a non-commutative one that is
23:55:19 <ais523> hmm, is -(0.0) actually negative zero? or is it positive zero?
23:55:28 <b_jonas> ais523: that depends on the programming language actually
23:55:40 <b_jonas> iirc in perl it's positive zero, in C it's negative zero, or something like that
23:55:47 <b_jonas> I'm not sure I know the full ruels
23:55:54 <b_jonas> but that's not the point here
23:56:03 <b_jonas> you can get a negative zero in other ways
23:56:14 <b_jonas> even without copysign
23:56:15 <ais523> indeed, I was just complaining at the -0.0 notation :-)
23:56:29 <ais523> also, copysign is bizarre as a primitive
23:56:42 <ais523> very few other functions would take a boolean input using the sign bit of a flota
23:56:44 <ais523> *float
23:56:48 <b_jonas> and negative zeroes matter because when you divide one by them, the sign becomes apparent
23:56:54 <ais523> unless copysign is capable of copying signs other than negative and positive?
23:56:59 <b_jonas> ais523: what? that's not true
23:57:22 <b_jonas> several x86 vector operations specifically dispatch by the top bit of each part of the register
23:57:26 <b_jonas> the ones that do conditional stuff
23:57:29 <zzo38> JavaScript has a Object.is() function to compare negative with positive zero
23:57:35 <zzo38> I don't know what Perl does.
23:57:36 <b_jonas> and that top bit is also the sign of the float
23:57:45 <ais523> zzo38: is it possible to have multiple different positive zeroes in JavaScript?
23:58:01 <b_jonas> zzo38: the problem with perl is that it's older than people have figured out that they want ieee floats, so it doesn't really suppor them properly
23:58:09 <b_jonas> it's like old programming langugaes
23:58:15 <ais523> > Object.is(new Number(0), new Number(0))
23:58:16 <zzo38> ais523: You can have positive zero as a bigint, but other than that I think not.
23:58:17 <ais523> false
23:58:17 <lambdabot> error:
23:58:17 <lambdabot> Not in scope: ‘Object.is’
23:58:17 <lambdabot> No module named ‘Object’ is imported.
23:58:32 <b_jonas> zzo38: can you have an integer versus a float zero?
23:58:38 <zzo38> ais523: That creates two separate objects representing the number zero, not the number value itself.
23:58:48 <ais523> actually, my new Number(0) objects don't even compare equal via ==
23:58:58 <ais523> but they do appear to do arithmetic correctly
23:58:59 <zzo38> b_jonas: Yes. An integer zero is 0n, but a float zero is just 0
23:59:19 <ais523> every time I think I'm beginning to understand JavaScript, it turns out I'm wrong
23:59:25 <b_jonas> khehe
23:59:27 <zzo38> ais523: Yes, because you are comparing objects; when comparing objects == checks if it is the same object same like ===
23:59:45 <b_jonas> ais523: this channel has some other people who think they understand javascript, are they of any help?
←2019-02-16 2019-02-17 2019-02-18→ ↑2019 ↑all