Time |
Nick |
Message |
00:29 |
|
AnotherBrick joined #minetest |
00:38 |
|
fling joined #minetest |
00:42 |
kahrl |
exio4, do you know any Haskell tutorial that doesn't use single-character variable names |
00:42 |
kahrl |
I just realized that that is the part that always makes me want to stop continuing |
00:43 |
AndroidKris |
What do you mean by library kahrl |
00:43 |
kahrl |
AndroidKris: something you can write a program with to capture video from a webcam |
00:44 |
AndroidKris |
hmmmmm....I have no idea how to write a program, but it sounds intriguing nonetheless. |
00:45 |
AndroidKris |
If I had any experience, I might be tempted to try. Cause I would totally turn this thing into a nanny cam.lol |
00:53 |
AndroidKris |
Yo, I think I need to look at installing ZoneMinder and getting a few more of these cheapo webcams to diy my home security system.lol |
00:53 |
Hijiri |
kahrl: the single-letter variables thing is sort of a part of Haskell idioms - you will see them used in standard library functions, other real code, etc, at least where the meaning is clear or familiar ("xs" for lists of "x", "p" for predicate, etc.) |
00:54 |
Hijiri |
I think part of the issue is that a lot of functions are generic enough that it's hard to find meaningful names to bind to |
00:54 |
kahrl |
I wouldn't mind that much if it was only a few well-known idioms |
00:55 |
kahrl |
it seems used for all kinds of special-purpose stuff everywhere though |
00:55 |
kahrl |
maybe a lazy language just makes the programmers lazy in picking names :P |
00:57 |
AndroidKris |
That makes a lot of sense actually. I don't think I would want to use, or even learn a "lazy language" as you so eloquently put it.lol |
00:57 |
kahrl |
but yeah I see the point about abstraction, yet it seems a bit overdone often when better names could be used |
00:58 |
Hijiri |
AndroidKris: Do you know what lazy means in this context |
00:58 |
AndroidKris |
I'm assuming a sort of "short hand" |
00:58 |
Hijiri |
Expressions in Haskell have non-strict evaluation |
00:59 |
Hijiri |
Which means that values don't get evaluated just because they are bound, or are used as a function argument |
00:59 |
Hijiri |
they get evaluated when they are pattern-matched on |
00:59 |
Hijiri |
GHC uses a specific sort of nonstrict evaluation called lazy evaluation |
00:59 |
Hijiri |
Which is nonstrictness + memoization |
01:00 |
Hijiri |
In an imperative language or a functional language with side-effects mixed into evaluation, this would be a disaster because it's hard to know when or how many times something will be evaluated |
01:01 |
Hijiri |
But since expression evaluation in Haskell doesn't cause side-effects, you're allowedto do this fairly safely |
01:01 |
Hijiri |
So the comment about lazy language -> lazy naming is just a play on words |
01:02 |
Hijiri |
A neat thing that lazy evaluation allows is the easy definition of infinite data structures |
01:02 |
Hijiri |
For instance, "[1..]" will give you an infinite list of numbers counting up from 1 |
01:02 |
Hijiri |
and then you can get the head of the list, take a sublist, etc., without the program halting, since you don't evaluate the whole list at once |
01:03 |
AndroidKris |
I see said the blind man. If I had known before hand, I would have laughed at the wordplay, instead of sounding like a moron with my comment.lol |
01:03 |
AndroidKris |
I need to go back to college. |
01:03 |
AndroidKris |
I regret dropping out. |
01:04 |
AndroidKris |
:( |
01:04 |
|
Enke joined #minetest |
01:04 |
|
Freejack joined #minetest |
01:04 |
kahrl |
I don't think many colleges teach functional programming these days, be it Haskell or a subset of Racket or something else |
01:05 |
Hijiri |
my college doesn't teach Haskell except in grad school |
01:05 |
Hijiri |
I think a lot of european colleges do FP though |
01:06 |
AndroidKris |
maybe not, but they have plenty of classes that can serve as a foundation to learning (or self-teaching, as it were), other languages and skills |
01:06 |
kahrl |
the one I went to did (Scheme), they switched to Java and C recently though, I think |
01:07 |
kahrl |
due to student complaints about how scheme isn't "useful in the job market" and the FP professor retiring :/ |
01:08 |
Hijiri |
they could teach clojure, I think that's getting popular in some job places |
01:08 |
Hijiri |
(I don't know clojure so I don't know how well that would go) |
01:09 |
kahrl |
I don't see why freshman programming classes need to use a job market relevant programming language anyway |
01:10 |
kahrl |
by the time one graduates, one has hopefully learned enough other languages on their own to be able to land a job |
01:10 |
Hijiri |
maybe the school wants to loan its students out as interns? |
01:10 |
Hijiri |
AndroidKris: If you want to try out Haskell, I recommend this guide: https://github.com/bitemyapp/learnhaskell |
01:11 |
kahrl |
that wasn't a widespread practise when I was there, at least |
01:11 |
Hijiri |
the haskell.org site also has a repl on the page that you can demo |
01:11 |
AndroidKris |
Thanks for the link. I'll bookmark it and take a look at it in the very near future. |
01:11 |
Hijiri |
kahrl: I don't know if it actually happens |
01:11 |
AndroidKris |
(got kind of a full plate as it is) |
01:11 |
kahrl |
of course any student could do that on their own, but it wasn't required for a degree |
01:17 |
|
jojoa1997 joined #minetest |
01:17 |
exio4 |
well, I sadly don't know any specific tutorial that doesn't uses short variable names kahrl :p |
01:17 |
exio4 |
the idea is that the smaller the scope, the "shorter" the name |
01:18 |
exio4 |
if it is a function that's unsafe, and is available at top level |
01:18 |
|
fling joined #minetest |
01:18 |
exio4 |
it is called "unsafeDoSomethingVeryHardDon'tDoItAthome" |
01:18 |
kahrl |
hehe |
01:18 |
exio4 |
if it is bound by pattern matching and goes out of scope in the next recursion, you call it 'x' |
01:18 |
jojoa1997 |
lol |
01:19 |
exio4 |
if it is in the closure of a recursive function, like a function, you could use either 'f', 'g', 'h', ... too, or just if you are recursing there, it's basically that we don't want to write more than _we could write_, not more than enough |
01:19 |
exio4 |
we're too lazy |
01:20 |
|
Wayward_Tab joined #minetest |
01:20 |
exio4 |
if the function goes over a bigger scope, yet still not top-level, maybe calling it 'fn', 'func' or 'fun' are good names |
01:20 |
exio4 |
(you already know this, I am just saying it :p) |
01:21 |
exio4 |
if you find a top-level function named "f" though, it's a bad thing(tm) :p |
01:22 |
kahrl |
I guess the problem is that I tend to try to understand programs top-down |
01:22 |
kahrl |
first get a general idea of what each module does, then functions |
01:22 |
kahrl |
(I'm ignoring OOP for now) |
01:23 |
kahrl |
by looking at the names and, if it exists, the first sentence of the documentation |
01:23 |
exio4 |
that's what I would try to use types for |
01:23 |
exio4 |
kahrl: I guess you know about 'point-free' code, which doesn't even name the variables you use |
01:23 |
kahrl |
then learn/guess what each parameter, again by looking at the name or docs |
01:24 |
kahrl |
exio4: I don't |
01:24 |
kahrl |
well, with haskell, I find that I need to understand each function bottom-up by looking at the implementation and internalizing it |
01:24 |
AndroidKris |
As I read the info on Hascell at the github link, I saw the different install methods and my A.D.D. randomly brought up the fact that last week I was looking into switching from Xubuntu to a pure Debian environment, but never actually did anything about it. I guess my point is, Does anyone prefer one over the other? |
01:25 |
exio4 |
kahrl: hm, well, pure functions are totally deterministic, and what isn't said by the code, is said by the type |
01:26 |
Hijiri |
I prefer Debian over Ubuntu in general since it's easy to install only freedomware |
01:26 |
Hijiri |
I haven't used Xubuntu, but I used to use XFCE and prefer xmonad now |
01:26 |
exio4 |
I actually consider functions blackboxes that do "something" (this should be a comment, or having well-defined types which only let you do a restricted set of operators plus function names) |
01:27 |
exio4 |
and if you need to look at a function, you consider it on its own, ignoring pretty much anything else, and considering the new functions you use as "smaller blackboxes" :p |
01:27 |
exio4 |
this is what I do though, not what anyone should or could do |
01:27 |
exio4 |
kahrl: how "far" are you in the haskell world? |
01:28 |
kahrl |
not very far at all |
01:28 |
exio4 |
well, you know how (lambda (x) (f x)) is the same as just "f"? |
01:28 |
kahrl |
as I said, I usually stop with the tutorials |
01:28 |
kahrl |
yeah I know lambda calculus |
01:28 |
exio4 |
\x -> f x == f ; eta-reduction |
01:28 |
kahrl |
ah, you mean that by point-free code |
01:28 |
VanessaE |
kahrl: that reads like "I know kung fu" :) |
01:29 |
exio4 |
yes, the idea is that you take even further |
01:29 |
exio4 |
kahrl: have you heard/read of combinatory logic? |
01:29 |
exio4 |
SKI combinators? |
01:29 |
kahrl |
nope |
01:30 |
exio4 |
well, nevermind then, I don't really know how to explain them without going down the rabbit hole :p |
01:30 |
exio4 |
the idea is that there are things like |
01:30 |
AndroidKris |
Hijiri: Isn't it convenient that xmonad is written in Haskell?lol |
01:31 |
exio4 |
ap f g x = f x (g x) |
01:31 |
exio4 |
i x = x |
01:31 |
AndroidKris |
Actually, more accurately, it's ironic. |
01:31 |
exio4 |
k x c = x |
01:31 |
kahrl |
well I think I can deal with point-free code pretty well, since that's mostly like what you do in math when you consider biduals of vector/normed spaces, and so on |
01:31 |
exio4 |
kahrl: well, yeah, the idea is that you pretty you avoid using variables, just function composition |
01:31 |
Hijiri |
I'm pretty sure I came across xmonad because of haskell |
01:32 |
Hijiri |
and then decided to use it because tiling WMs are for cool hackers |
01:32 |
exio4 |
(+1) . (+2) == \x -> (+1) ((+2) x) == 1+2+x |
01:32 |
exio4 |
this is nicer when considering things like map |
01:32 |
exio4 |
map f . map g |
01:33 |
kahrl |
ahh okay |
01:33 |
exio4 |
the idea is that instead of doing |
01:33 |
exio4 |
something x = map f (map g (map h x)) |
01:33 |
exio4 |
you write |
01:33 |
exio4 |
something = map f . map g . map h |
01:33 |
AndroidKris |
*wants to be a cool hacker too. |
01:33 |
kahrl |
why not map (f . g)? |
01:33 |
* AndroidKris |
wants to be a cool hacker too. |
01:33 |
exio4 |
psh, because that's even more nicer! |
01:34 |
exio4 |
and yeah, instead of map (\x -> f (g (h x))), write map (f . g . h) :p |
01:35 |
exio4 |
also, in names, it seems pretty obvious that things that are used "rarely" get longer names than those that are used a lot |
01:35 |
exio4 |
and some things even get infix operators |
01:35 |
exio4 |
like <$> for fmap, <*> for ap, >>= for bind, <> for monoid's mappend.. |
01:36 |
exio4 |
kahrl: remember that thing you said about "carrying the state around"? |
01:36 |
kahrl |
the thing is, when you stumble across such line noise (:P) it's hard to ixquick what it means |
01:36 |
exio4 |
in pure functional code |
01:37 |
exio4 |
kahrl: right, that's why using special things like hoogle/hayoo/etc seem to be really cool |
01:37 |
kahrl |
ah, I didn't know about those, that's pretty cool |
01:38 |
exio4 |
you can search by type, function name/operator, and other things |
01:38 |
exio4 |
you can say "duh, what's this (<>) thing? where does it comes from?" |
01:38 |
exio4 |
and search it in hoogle and get answers from which libraries, which type it has, etc |
01:39 |
exio4 |
I think the biggest 'problem' with haskell is that, too |
01:41 |
exio4 |
I should stop selling Haskell |
01:41 |
exio4 |
people might start thinking my work is selling it! :p |
01:43 |
exio4 |
I basically spend 4~ hours per week (irl), telling things that Haskell and more generally functional programming does differently |
01:44 |
AndroidKris |
exio4: I think I have an understanding of what you mean by "functional programming", but could you more concisely define it? Is there a "dysfunctional programming"? |
01:44 |
exio4 |
I think it's an 4/8 extra hours per week on irc too |
01:45 |
kahrl |
yeah, that's pretty much approaching a part-time job :) |
01:45 |
exio4 |
AndroidKris: functional programming is basically a not so cool name, but it is normally used to refer to languages where functions are "first-class" (I'll explain this in a bit) and where pretty much the way to abstract things is using high-order-functions (will explain, too) |
01:45 |
|
ClaudeRoy joined #minetest |
01:46 |
exio4 |
"first class functions" means functions are just typical and normal values you can store in a variable, a structure, return them from a function, and what not |
01:46 |
exio4 |
a "typical" example, would be a list of functions, or something similar |
01:47 |
exio4 |
"high-order functions" are specifically functions that either take functions as arguments, return functions, or both |
01:48 |
exio4 |
AndroidKris: a key thing that functional languages do differently, normally, is go with the a "immutable by default" (ML..) |
01:48 |
|
Shackra joined #minetest |
01:49 |
exio4 |
AndroidKris: basically, when you say x is 1, it's never going to be 2, this helps for various things, one of those, is being able to reason about the correctness of the code in an easier manner |
01:49 |
exio4 |
it also allows for reducing things that'd be "am I passing this by reference, or by value?" |
01:49 |
exio4 |
because it doesn't matter! |
01:50 |
exio4 |
some languages, such as ML/OCaml,... allow you to have unrestricted mutable data, but it getting it's own "special" reference type... wow rude |
01:50 |
|
AndroidKris joined #minetest |
01:51 |
exio4 |
other languages, like Haskell, which tend to be called "pure", disallow mutable data, by forcing you to keep it in its own contexts, and limiting "side-effects" to self-contained functions, etc |
01:51 |
exio4 |
(there are functional languages which do neither of this, though) |
01:51 |
|
AndroidKris joined #minetest |
01:52 |
exio4 |
kahrl: yeah, but I wouldn't sell stuff I don't really like if it was my job :p |
01:53 |
|
AndroidKris joined #minetest |
01:53 |
exio4 |
AndroidKris: network problems? :P |
01:53 |
AndroidKris |
Isp throttled me |
01:54 |
AndroidKris |
I'm running at a 512kbps satellite connection speed, with an overcast sky, at the moment. |
01:54 |
exio4 |
your ISP seems to be not so cool, killing networks ain't nice! :p |
01:54 |
AndroidKris |
:/ |
01:54 |
exio4 |
oh well |
01:54 |
|
Viper168 joined #minetest |
01:55 |
exio4 |
AndroidKris: http://irc.minetest.ru/minetest/2015-04-30#i_4236478 |
01:55 |
AndroidKris |
I keep trying to tell them that. I even brought up the new FCC reclassification of ISPs to try to convince them that they couldn't throttle me any more. They just brought up the fact that I signed a two year agreement with them and they didn't have to change anything until the agreement was up. |
01:55 |
AndroidKris |
lame |
01:56 |
exio4 |
I see |
01:57 |
AndroidKris |
I like the "wow rude" comment. |
01:57 |
* AndroidKris |
nods |
01:57 |
AndroidKris |
my bad |
01:57 |
exio4 |
that was becuse you just had quit :p |
01:57 |
exio4 |
while I was writing that |
01:57 |
AndroidKris |
yeah, I know. It may happen a few more times tonight too.lol |
01:58 |
AndroidKris |
I apologize in advance in case it does. |
01:58 |
exio4 |
I'll be working on a few examples and demos of Haskell for the discrete math prof tomorrow |
01:58 |
|
Akagi201 joined #minetest |
01:59 |
exio4 |
I showed a few small functions, and how basically the language does lots of things that look 'obvious' from a mathematical standpoint, and how it allows some kind of reasoning extremely easy, like induction :D |
02:00 |
exio4 |
(which is the next topic we will learn) |
02:00 |
exio4 |
I think the "last" one of this year is rings |
02:00 |
exio4 |
last topic |
02:03 |
AndroidKris |
My brain is starting to hurt.lol |
02:04 |
AndroidKris |
No offense. It's actually very interesting. I just have to much blood in my alcohol stream to stay focused on this at the moment. |
02:04 |
AndroidKris |
Besides that, I've been a stay at home dad for the past three weeks and it's draining me.lol |
02:06 |
exio4 |
nah, don't worry |
02:06 |
exio4 |
the concepts from the "FP world" feel and are extremely complex unless you're used a little bit to them |
02:07 |
exio4 |
it's basically a new way to think problems, which needs you to rewire your neurons :P |
02:07 |
kahrl |
it might actually be easier for you since you haven't done imperative programming yet |
02:08 |
exio4 |
oh, sorry |
02:08 |
|
ClaudeRoy joined #minetest |
02:08 |
exio4 |
I thought (s)he knew how to program in an imperative language :p |
02:09 |
kahrl |
he, probably, considering the dad comment :P |
02:09 |
|
AndroidKris joined #minetest |
02:09 |
AndroidKris |
I'm usually a pretty quick study, no matter the subject. I have a habit of "wiping the slate" when approaching a new subject, even ones that may be closely related. |
02:09 |
AndroidKris |
And I'm a he...hence the "Stay at Home Dad" phrase.lol |
02:10 |
exio4 |
oh |
02:10 |
exio4 |
I am a bit tired, have been at uni for a few hours |
02:11 |
AndroidKris |
Yes, I know...AndroidKris...If one assumes that Kris is my real name based on this nick, then one would probably also assume that I'm female due to the effeminate spelling of my name. |
02:11 |
AndroidKris |
uni is what exactly exio04? |
02:11 |
exio4 |
nah, I just said (s)he as some people don't seem to like being confused :p |
02:11 |
exio4 |
university |
02:12 |
kahrl |
AndroidKris: I thought you were a robot, because of the first part of the name :P |
02:12 |
AndroidKris |
Lawls. Well, kahrl, that's a first. |
02:12 |
exio4 |
I want a robot that writes code for me |
02:12 |
AndroidKris |
but if I were a robot, wouldn't you think I would be at least a little smarter? |
02:12 |
exio4 |
actually, not write but fix |
02:12 |
exio4 |
because writing code is amazing |
02:13 |
kahrl |
well the robots I helped construct in college were actually pretty dumb, heh |
02:13 |
kahrl |
so you're already a lot smarter than them |
02:13 |
exio4 |
anyway, I have a problem I can't really solve :( |
02:13 |
exio4 |
I am solving the eight queens problem extremely naively |
02:14 |
AndroidKris |
eight queens? |
02:14 |
exio4 |
you have eight queens, in a 8x8 ('chess') board, you need to place them such that no queen can "directly eat" other queen |
02:15 |
AndroidKris |
How does one queen eat another? |
02:15 |
exio4 |
being in the same row / column / diagonal |
02:15 |
exio4 |
https://en.wikipedia.org/wiki/Eight_queens_puzzle |
02:15 |
AndroidKris |
ooooooo....I likey these kind of puzzles. |
02:16 |
exio4 |
I have it generalized, for N queens in a NxN board, my problem is that if naively generate posibilites from the set of possible "free spaces", I am basically doing some work more than once |
02:17 |
exio4 |
because [(1,1) , (2,3), (5,7)] is the same as [(1,1), (5,7), (2,3)], and [(2,3), (5,7), (1,1)] and ... |
02:18 |
exio4 |
my first version, basically did that ^, so I had to "remove the duplicates" at the end, which was somewhat fast, but it generated lots of useless values |
02:18 |
kahrl |
exio4: hmm, maybe generate them row by row? |
02:18 |
kahrl |
exio4: so you only end up with sorted possibilities |
02:19 |
exio4 |
kahrl: you mean generate [(1,x)] [(2,x)] ... and so on, and then "naively combine" those? |
02:20 |
kahrl |
exio4: yeah, something like that. What's your current algorithm? |
02:20 |
AndroidKris |
Well, I don't know the code, but I have a few "logical" insights if you would like my $0.02 |
02:21 |
exio4 |
AndroidKris: those are better than code :) |
02:21 |
exio4 |
kahrl: let me finish :p |
02:21 |
kahrl |
exio4: oh sorry, didn't think I interrupted, go ahead |
02:22 |
exio4 |
I just thought "I could generate the posibilites, and then write down which ones are the ones that I already travelled" so I went with representing paths as ordered sets (binary trees, basically), and keep a binary tree with posibilites where I keep adding values |
02:23 |
exio4 |
and then, "reduce" the solutions in every step to the ones that aren't in that set |
02:23 |
exio4 |
the problem is that I now spend over 80% of the time in that binary tree |
02:23 |
exio4 |
I'll post my actual code |
02:24 |
kahrl |
exio4: not sure I fully understand it yet, but maybe instead of a tree, just use a list |
02:24 |
kahrl |
exio4: and whenever you would insert a value that wouldn't be added to the ended in a sorted list, just abort that entire part of the computation |
02:24 |
kahrl |
added to the end* |
02:25 |
AndroidKris |
With over 4.4 billion arrangements on an 8x8 grid. (not solutions, just arrangements), that is a LOT of double checking for already traveled posibilities. |
02:25 |
|
OldCoder joined #minetest |
02:25 |
exio4 |
I think the biggest problem with my actual approach was trying "all" free posibilites naively |
02:25 |
|
AndroidKris joined #minetest |
02:26 |
exio4 |
by the way, I tried with the naive algorithm at first, finding all solutions the to 8x8 grid, it took 20~ minutes on my laptop |
02:26 |
exio4 |
using a single core of my netbook, 1.6ghz.. intel atom.. :P |
02:26 |
kahrl |
what language? (I have a guess but... :P) |
02:26 |
exio4 |
on* |
02:26 |
exio4 |
kahrl: guess which language and I am pretty sure you'll have a correct answer |
02:26 |
kahrl |
okay :) |
02:27 |
exio4 |
oh, and half of the code is in spanish, and the other half in english, let me fix it |
02:28 |
AndroidKris |
4x4 is the smallest possible grid. A grid one quarter the size would cut out 3/4 of the work for a solution and simplify the coding...Then you expand the code to incorporate 5x5, then 6x6, etc. |
02:29 |
sofar |
exio4: I wrote a solution in pascal in 1996 that generated all 12 unique results (plus all the symmetrical ones) in 8 minutes on a 80286 |
02:29 |
sofar |
exio4: too bad I don't have that code anymore, but it was rather simple.... |
02:30 |
exio4 |
yeah, kahrl's approach seems to be the easiest for not doing too much work |
02:31 |
sofar |
yup, I used a list to store previously found solutions |
02:32 |
sofar |
it helps to make a recursive solver too, code gets really small |
02:32 |
sofar |
anyway, it's a great CS major exercise :) |
02:32 |
AndroidKris |
What is the ultimate goal of your coding here exio04? |
02:32 |
sofar |
I once asked a guy in an interview to discuss how he would design it |
02:33 |
exio4 |
heh |
02:34 |
AndroidKris |
exio4, what does your code need to have produced when it completes it's task? |
02:35 |
exio4 |
valid solutions to the problem |
02:35 |
AndroidKris |
all of them? |
02:35 |
exio4 |
http://dpaste.com/22W8BZ5 |
02:35 |
AndroidKris |
all 92? |
02:36 |
exio4 |
AndroidKris: I basically wrote the code such that you can ask for n solutions |
02:36 |
exio4 |
generating only n solutions is done automatically by exploiting lazyness |
02:36 |
AndroidKris |
n would be based on the number of queens and grid size. |
02:37 |
AndroidKris |
I keep saying 92 because that's how many solutions there are for 8x8 |
02:37 |
exio4 |
yes, I know :p |
02:37 |
exio4 |
anyway |
02:38 |
AndroidKris |
Sorry, speaking(typing) so I can keep it straight in my mind |
02:38 |
exio4 |
having a queen on every row / column is a fact I could/show exploit |
02:38 |
exio4 |
should* |
02:38 |
exio4 |
lol, the code I pasted is the one before I pressed "save", so it's still in spanish, just realzied |
02:38 |
AndroidKris |
It would reduce the number of possibilities dramatically |
02:39 |
exio4 |
and would make my problem of repeated paths go away |
02:39 |
AndroidKris |
yup |
02:40 |
exio4 |
I might throw away the whole code and start again |
02:40 |
exio4 |
yup, will do that |
02:40 |
AndroidKris |
Nice code btw....especially the Punto = Reina |
02:40 |
AndroidKris |
lol |
02:40 |
exio4 |
it's spanish :P |
02:40 |
AndroidKris |
Not sure if Reina is a person, or what, but I know what Punto means. |
02:41 |
exio4 |
Reina is Queen |
02:41 |
AndroidKris |
Ah, that's an interesting way of referring to a queen...as Punto. |
02:41 |
AndroidKris |
lol |
02:42 |
kahrl |
exio4: I haven't looked at your code yet, but this brute force thing I just whipped together seems to do pretty well: http://dpaste.com/2HSXV86 |
02:42 |
AndroidKris |
wow, fifteen minutes and kahrl has a solution.lol |
02:42 |
sofar |
92 is not divisible by 8, explain why there's only 92 and not 96 (which is 12x8) |
02:43 |
exio4 |
right |
02:43 |
AndroidKris |
sofar, duplicate solutions |
02:43 |
sofar |
incomplete answer |
02:43 |
kahrl |
sofar: some solutions are equal to their rotated/flipped counterparts? |
02:43 |
sofar |
have you looked at why 11 solutions have 8 symmetries, but ONE has only 4? |
02:43 |
exio4 |
some solutions only have two "duplicates" (rotated/flipped) |
02:44 |
sofar |
incorrect as well |
02:44 |
sofar |
11 solutions have 7 symmetry siblings (lets call em that) |
02:44 |
AndroidKris |
example: if two unique solutions have the same "mirror" the mirror for one is removed as a possible |
02:44 |
AndroidKris |
possibility |
02:44 |
sofar |
one of them is POINT-symmetric |
02:44 |
sofar |
therefore, only 3 symmetry siblings |
02:45 |
sofar |
so you have 11*8 + 1*4 |
02:45 |
exio4 |
kahrl: yes, the problem with my algorithm is that I naively repeat pathways |
02:49 |
|
ir2ivps10 joined #minetest |
02:50 |
YvesLevier |
Hey :) - plz How can i separate a stack of MineCarts one by one using mesecon? You cant imagine the weirds solutions i tried... |
02:51 |
AndroidKris |
YvesLevier: like connecting them similar to a train? |
02:53 |
YvesLevier |
AndroidKris: kinda... I have transportation stations. I would want to replace a cart in the station when one goes. Easy... but they are all stacked in one pile. |
02:54 |
YvesLevier |
Just cant manage that! |
02:54 |
YvesLevier |
As soon they stack, i cant separate otherway than manually. |
02:55 |
YvesLevier |
See? |
02:55 |
AndroidKris |
Use powered rails and not gates...basically, when the entering cart crosses a certain rail, it flips a switch to turn on the rail that the next cart is resting on and sends it on it's way. |
02:56 |
AndroidKris |
^^Theoretically possible, not practiced, so don't hate me if it doesn't work |
02:58 |
YvesLevier |
sure i tried to... even with pushable blocks, but all goes along since they are in only one pile... |
03:01 |
YvesLevier |
Will try to randomly get them seperate using blinking flowers and hills |
03:02 |
YvesLevier |
VanessaE: ^ are you active? ^ |
03:05 |
|
AndroidKris joined #minetest |
03:07 |
AndroidKris |
And if the next cart needs a push, use pistons. |
03:07 |
AndroidKris |
Sorry about the disconnect, crappy internet |
03:11 |
AndroidKris |
YvesLevier, are you using this mod? https://forum.minetest.net/viewtopic.php?id=2451 |
03:12 |
exio4 |
wow rude |
03:12 |
YvesLevier |
pistons dont destroy rails as in MineCraft. brb |
03:12 |
AndroidKris |
me? |
03:13 |
AndroidKris |
exio4^^ |
03:13 |
YvesLevier |
AndroidKris: Yes im using this mod |
03:15 |
exio4 |
welp, I am generating 94 solutions |
03:16 |
AndroidKris |
Duplicates |
03:17 |
exio4 |
oh wait, I am miscounting a few things |
03:17 |
YvesLevier |
also node detector dont detect carts, even programmed for that. |
03:18 |
YvesLevier |
It detects rails but not the cart on it |
03:18 |
exio4 |
this is generating only 92 solutions |
03:18 |
YvesLevier |
i tried under, side, over... |
03:18 |
exio4 |
and it takes <0.02s |
03:19 |
YvesLevier |
AndroidKris: What you mean "Duplicates"? |
03:20 |
AndroidKris |
not you YvesLevier, sorry, I meant that to exio4 |
03:20 |
YvesLevier |
kk |
03:23 |
YvesLevier |
In MineCraft, there was detect-rails that activate a redstone system. I found none of something similar in Minetest. Dont think i regret MineCraft. Just that im lost about detecting a cart without a passenger in. |
03:25 |
exio4 |
kahrl, AndroidKris, http://dpaste.com/0VA1XAB |
03:25 |
YvesLevier |
If so, i shall be able to keep them seperated. |
03:27 |
AndroidKris |
Minetest is still a bit behind minecraft in a development sense YvesLevier, so the detect rails may not actually be there yet. |
03:27 |
exio4 |
maybe I can microptimize now |
03:27 |
AndroidKris |
exio4, you know that's going to look like gibberish to me right. |
03:28 |
exio4 |
aw :p |
03:28 |
AndroidKris |
Although, It is a LOT simpler (read: concise) than it was before. |
03:30 |
exio4 |
you won't believe it, but finding the solutions is only 85% of the time |
03:30 |
exio4 |
http://dpaste.com/1TNES2E |
03:30 |
exio4 |
:p |
03:34 |
exio4 |
~80% of the time is spent reducing the set of solutions |
03:34 |
ShadowBot |
exio4: Error: You must be registered to use this command. If you are already registered, you must either identify (using the identify command) or add a hostmask matching your current hostmask (using the "hostmask add" command). |
03:34 |
exio4 |
the garbage collector overhead isn't that high, <10% of the time is spent on it |
03:35 |
AndroidKris |
Pretty efficient. |
03:35 |
exio4 |
and it keeps the memory usage pretty much "constant" (actually, it doesn't, you know, it keeps the solutions because I count them at the end, instead of doing that in-place and then discarding it but whatever :p) |
03:36 |
AndroidKris |
lol, that last bit went so far over my head. |
03:36 |
exio4 |
http://dpaste.com/1NGJHNX |
03:36 |
AndroidKris |
I don't even want an explanation.lol. I just want to bring up netflix and watch daredevil |
03:36 |
AndroidKris |
lol |
03:37 |
|
OldCoder joined #minetest |
03:37 |
exio4 |
it only allocated 21~gb of data |
03:37 |
exio4 |
apparently |
03:37 |
exio4 |
unless I am reading "21,389,982,272 bytes" wrong |
03:38 |
exio4 |
and 6.13 out of 80 seconds in the garbage collector |
03:38 |
exio4 |
that's a lot |
03:39 |
AndroidKris |
21 billion bytes is closer to 20gb than 21. |
03:40 |
exio4 |
well, the difference between 20 and 21 gb of memory allocated isn't that bad is it! |
03:40 |
AndroidKris |
excuse me, 2.1gb, not 21gb. |
03:40 |
AndroidKris |
had to get out my calculator |
03:40 |
AndroidKris |
lol |
03:41 |
exio4 |
wow. amazing |
03:41 |
AndroidKris |
there is a HUGE difference between 21gb and 2.1gb though.lol |
03:41 |
exio4 |
what, really? |
03:41 |
exio4 |
is it 2.x? |
03:41 |
AndroidKris |
long url incoming |
03:41 |
AndroidKris |
https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=bytes%20to%20gigabytes&es_th=1 |
03:41 |
AndroidKris |
lol |
03:42 |
exio4 |
21,389,982,272 / 1000~ (bytes => kb) / 1000 (kb => mb) / 1000 (mb => gb) |
03:42 |
AndroidKris |
wait...I read that wrong.. |
03:42 |
exio4 |
/1000 is taking out three zeroes |
03:42 |
AndroidKris |
didn't move the decimal enough.lol |
03:42 |
AndroidKris |
it's 2.1e8... |
03:42 |
AndroidKris |
which is 21 |
03:42 |
AndroidKris |
gb |
03:43 |
exio4 |
:D |
03:43 |
AndroidKris |
e7, would be 2.1 |
03:43 |
AndroidKris |
my bad |
03:44 |
AndroidKris |
Okay, yeah, on that note. I'm off to watch Netflix |
03:44 |
AndroidKris |
Night ppl |
03:44 |
|
Zeno` joined #minetest |
03:46 |
exio4 |
nice |
03:46 |
exio4 |
GC time went down to 0.06s when changing a few things |
03:46 |
exio4 |
like not keeping things alive :p |
03:48 |
exio4 |
and the memory usage is now pretty much constant, nice |
03:49 |
exio4 |
:D |
04:00 |
YvesLevier |
Found something |
04:08 |
|
Out`Of`Control joined #minetest |
04:54 |
|
jason__ joined #minetest |
05:19 |
|
Wayward_Tab joined #minetest |
05:22 |
|
jin_xi joined #minetest |
05:31 |
|
LazyJ joined #minetest |
05:34 |
|
barrydk joined #minetest |
05:46 |
|
zeRez joined #minetest |
06:00 |
|
antief joined #minetest |
06:09 |
|
someguy_irc joined #minetest |
06:21 |
|
nore joined #minetest |
06:28 |
|
Akagi201 joined #minetest |
06:29 |
|
Akagi201_ joined #minetest |
06:32 |
|
Akagi20__ joined #minetest |
06:59 |
|
Darcidride joined #minetest |
07:07 |
|
Haudegen joined #minetest |
07:09 |
|
err404 joined #minetest |
07:15 |
|
Calinou joined #minetest |
07:21 |
|
zeRez joined #minetest |
07:29 |
|
SouL_|_ joined #minetest |
07:44 |
|
chchjesus joined #minetest |
07:45 |
|
aheinecke joined #minetest |
07:54 |
|
FR^2 joined #minetest |
07:57 |
|
zak1975 joined #minetest |
08:04 |
|
Yepoleb joined #minetest |
08:12 |
|
Trustable joined #minetest |
08:30 |
|
Jordach joined #minetest |
08:31 |
|
SouL_|_ joined #minetest |
08:40 |
Megaf |
Hi |
08:42 |
OldCoder |
o/ |
08:42 |
OldCoder |
z |
08:46 |
Megaf |
Its been ages since my server crashed for the last time |
08:46 |
Megaf |
That makes me very happy |
08:46 |
OldCoder |
Ah |
08:47 |
|
book` joined #minetest |
08:49 |
Megaf |
dont you like when your server doesnt crash? |
08:51 |
Megaf |
hi book |
08:52 |
Megaf |
I think the last update b4oke 3d armor |
08:58 |
|
aheinecke_ joined #minetest |
09:04 |
|
aheinecke joined #minetest |
09:05 |
|
JamesTait joined #minetest |
09:05 |
JamesTait |
Good morning all; happy Poem in Your Pocket Day! :-D |
09:11 |
|
jin_xi joined #minetest |
09:22 |
Jordach |
Megaf, 212 hours on my public server before it crashed |
09:23 |
Megaf |
Jordach: oops |
09:23 |
|
zak1975 joined #minetest |
09:24 |
Megaf |
well. i quit adding new mods and im using a very conservative configuration where im exchanging performance for stability. |
09:48 |
|
ElectronLibre joined #minetest |
09:55 |
|
Viper168_ joined #minetest |
09:59 |
|
FreeFull joined #minetest |
10:11 |
|
Trixar_za joined #minetest |
10:23 |
|
SouL_|_ joined #minetest |
10:26 |
|
Menche joined #minetest |
10:30 |
|
Haudegen joined #minetest |
11:13 |
|
Darcidride joined #minetest |
11:15 |
|
Ataron joined #minetest |
11:15 |
|
meldrian joined #minetest |
11:17 |
|
AndroidKris joined #minetest |
11:17 |
AndroidKris |
What light producing blocks produce enough light to trigger a solar panel? |
11:18 |
ElectronLibre |
Torches should do that, also Mesecons' coloured light blocks, and glow glasses in Calinou's moreblocks mod. |
11:20 |
|
AndroidKris joined #minetest |
11:23 |
AndroidKris |
ElectronLibre, I can't get any of those to work |
11:23 |
ElectronLibre |
Oh. |
11:23 |
ElectronLibre |
Even by placing them over the solar panel? |
11:29 |
AndroidKris |
I got that part working now. I had a piece of mesecon missing, so it wasn't triggering, but the panel was sending the signal. |
11:29 |
AndroidKris |
Now I need to block the light from the panel with a minecart.lol |
11:32 |
AndroidKris |
It would seem, however, that minecarts allow light to pass through. |
11:42 |
|
SouL_|_ joined #minetest |
11:54 |
|
SouL_|_ joined #minetest |
11:56 |
|
Akagi201 joined #minetest |
12:04 |
|
Akagi201_ joined #minetest |
12:15 |
|
ClaudeRoy joined #minetest |
12:16 |
|
luizrpgluiz joined #minetest |
12:16 |
luizrpgluiz |
hi |
12:39 |
|
phantombeta joined #minetest |
12:43 |
|
SouL_|_ joined #minetest |
12:44 |
|
luizrpgluiz left #minetest |
12:51 |
|
Jordach joined #minetest |
13:00 |
|
Wayward_Tab joined #minetest |
13:04 |
|
AnotherBrick joined #minetest |
13:24 |
|
roboman2444 joined #minetest |
13:43 |
|
Player_2 joined #minetest |
13:45 |
|
jin_xi joined #minetest |
13:50 |
|
Xenoth joined #minetest |
13:53 |
|
Tuxedo[Qyou] joined #minetest |
14:16 |
|
Jousway joined #minetest |
14:17 |
|
Darcidride joined #minetest |
14:27 |
|
tpe joined #minetest |
14:33 |
|
Zeno` joined #minetest |
14:44 |
|
hmmmm joined #minetest |
14:47 |
YvesLevier |
Hola :) |
14:47 |
|
younishd joined #minetest |
14:48 |
ElectronLibre |
YvesLevier, who were you taling to? |
14:49 |
YvesLevier |
Wondering if som1 made a texture in wich i can find... well "une calotte à l'envers" (tu peux traduire ça ElectronLibre?) |
14:49 |
YvesLevier |
ElectronLibre: ^ |
14:50 |
ElectronLibre |
._. |
14:50 |
ElectronLibre |
"A cap upside down"? |
14:51 |
YvesLevier |
Looks like that |
14:55 |
YvesLevier |
There is a kid who wants to join our server. I wanna bring him to move to Ubuntu (kind of a mission for me). I enumerated Minetest gifts im ready to offer to him if he does so. Accidentally i told "A cap upside down" to his parents. I fear im trapped now, sure that this will be their preference. |
15:07 |
|
Trustable joined #minetest |
15:09 |
|
Jordach_ joined #minetest |
15:10 |
|
Telesight joined #minetest |
15:32 |
|
alket joined #minetest |
15:45 |
|
Haudegen joined #minetest |
15:45 |
|
ClaudeRoy joined #minetest |
15:47 |
|
misprint joined #minetest |
15:50 |
|
rubenwardy joined #minetest |
15:50 |
|
est31 joined #minetest |
15:59 |
rubenwardy |
If I was to make a web control panel for Minetest, would it be better as a PHP or Flask(Python) Application? The advantage of a Python app is less overhead - no need for an apache webserver. The advantage for PHP is it is more widely available. But then MT servers are usually run on VPS and personal computers, so that probably isn't an issue. |
15:59 |
rubenwardy |
And with a python app, you can run processes independent of the views (ie page loads) |
16:00 |
|
Halamix2 joined #minetest |
16:04 |
|
Krock joined #minetest |
16:06 |
exio4 |
I'd assume Yesod would be pretty cool |
16:06 |
rubenwardy |
no thanks ;) |
16:07 |
exio4 |
or maybe Happstack, or just Snap |
16:07 |
exio4 |
who knows |
16:12 |
Calinou |
rubenwardy, pleasenotphp.jpeg |
16:12 |
Calinou |
Node.js! :D |
16:12 |
rubenwardy |
Yeah |
16:12 |
|
ecutruin joined #minetest |
16:12 |
Calinou |
Python is OK too |
16:12 |
Calinou |
so is Ruby |
16:13 |
Calinou |
but PHP should probably be avoided, unless you use Laravel which makes it acceptable (or so I heard) |
16:13 |
rubenwardy |
I won't mind Node.js, but I'm more confortable with Python |
16:14 |
|
AnotherBrick joined #minetest |
16:32 |
|
alt81772 joined #minetest |
16:43 |
|
ac_minetest joined #minetest |
16:43 |
|
Builder123 joined #minetest |
16:54 |
|
alt30395 joined #minetest |
16:54 |
|
CoconutOfDeath joined #minetest |
16:57 |
|
Guest93562 joined #minetest |
16:59 |
|
jin_xi joined #minetest |
17:31 |
|
SouL_|_ joined #minetest |
17:33 |
|
rubenwardy joined #minetest |
17:38 |
|
alt81507 joined #minetest |
17:38 |
|
fireglow- joined #minetest |
17:41 |
|
Moyst_ joined #minetest |
17:41 |
|
lemonade_ joined #minetest |
17:42 |
|
werwerwer joined #minetest |
17:45 |
|
e1z0_ joined #minetest |
17:45 |
|
gv1222_ joined #minetest |
17:49 |
|
Wayward_One_ joined #minetest |
17:49 |
|
Haudegen joined #minetest |
17:49 |
|
SmugLeaf joined #minetest |
17:49 |
|
dzho joined #minetest |
17:49 |
|
Robozman joined #minetest |
17:49 |
|
DarkNekros joined #minetest |
17:49 |
|
disableclouds joined #minetest |
17:53 |
|
Taoki joined #minetest |
17:54 |
|
Fritigern joined #minetest |
17:54 |
|
theTroy joined #minetest |
18:15 |
|
sfan5_ joined #minetest |
18:19 |
|
hmmmm joined #minetest |
18:39 |
|
sfan5__ joined #minetest |
18:41 |
|
sfan5 joined #minetest |
19:06 |
|
CWz joined #minetest |
19:11 |
|
CWz left #minetest |
19:17 |
|
Inspire049 joined #minetest |
19:18 |
rubenwardy |
Well, basic framework is up: https://github.com/rubenwardy/minetest_web_panel |
19:29 |
|
SouL_|_ joined #minetest |
19:30 |
|
crazyR_ joined #minetest |
19:30 |
|
crazyR_ joined #minetest |
19:33 |
|
Lunatrius` joined #minetest |
19:34 |
|
theblazehen joined #minetest |
19:37 |
xenkey |
Hi |
19:37 |
|
Hijiri joined #minetest |
19:38 |
|
Builder123 joined #minetest |
19:38 |
|
Builder123 joined #minetest |
19:39 |
|
Builder123 joined #minetest |
19:54 |
|
Builder123 joined #minetest |
20:01 |
|
antief joined #minetest |
20:46 |
|
ElectronLibre joined #minetest |
20:53 |
|
Builder123 joined #minetest |
21:07 |
|
Enke joined #minetest |
21:17 |
|
DMackey joined #minetest |
21:17 |
|
err404 joined #minetest |
21:25 |
|
Pro-grammer joined #minetest |
21:25 |
|
Tux[Qyou] joined #minetest |
21:27 |
|
Hijiri joined #minetest |
21:31 |
|
jojoa1997 joined #minetest |
21:34 |
|
Builder123 joined #minetest |
21:43 |
|
meldrian joined #minetest |
22:20 |
|
Hijiri joined #minetest |
22:21 |
|
Joshieson joined #minetest |
22:26 |
|
Viper168 joined #minetest |
22:27 |
|
berome joined #minetest |
22:28 |
|
berome left #minetest |
22:41 |
|
Builder123 joined #minetest |
22:42 |
|
Builder123 joined #minetest |
22:48 |
|
Enke joined #minetest |
23:02 |
|
Hijiri joined #minetest |