--- Log opened Wed Aug 08 00:00:19 2012 |
00:25 | | You're now known as TheWatcher[T-2] |
00:28 | | You're now known as TheWatcher[zZzZ] |
00:44 | | himi [fow035@D741F1.243F35.CADC30.81D435] has quit [Ping timeout: 121 seconds] |
01:19 | | Derakon[AFK] is now known as Derakon |
01:19 | | mode/#code [+ao Derakon Derakon] by ChanServ |
01:27 | | io|gone is now known as iospace |
01:28 | | himi [fow035@D741F1.243F35.21F583.ED0C7D] has joined #code |
01:28 | | mode/#code [+o himi] by ChanServ |
02:33 | | Attilla [Obsolete@Nightstar-36d1ef0e.as43234.net] has quit [Ping timeout: 121 seconds] |
02:42 | | himi [fow035@D741F1.243F35.21F583.ED0C7D] has quit [Ping timeout: 121 seconds] |
03:33 | | Moltare [Moltare@583787.FF2A18.190FE2.4D81A1] has quit [Connection reset by peer] |
03:39 | | Moltare [Moltare@583787.FF2A18.190FE2.4D81A1] has joined #code |
03:42 | | * Derakon ponders Python. |
03:42 | <&Derakon> | I want to set up a mapping of class types to functions that handle those class types. |
03:42 | <~Vornicus> | "functions that handle those class types" as in, not the constructors but things that, for instance, uh... |
03:42 | <&Derakon> | I'm writing some display code, and in the interests of keeping the display code out of the main game engine it isn't resident in the objects that are being drawn, but is instead imposed from outside. |
03:43 | <&Derakon> | So e.g. {type(Square): drawSquare, type(Circle): drawCircle, etc...} |
03:43 | <&Derakon> | Except that this doesn't actually work, because type(objectThatIsASquare) = "<type 'instance'>", while type(Square) = "<type 'classobj'>" |
03:44 | <~Vornicus> | Oh I hate this already. |
03:44 | <&Derakon> | I could use isinstance, but then I have to iterate over all the possible handlers. |
03:44 | <&Derakon> | Got a better idea then? |
03:45 | <~Vornicus> | I suspect what I'd do is register - as a class variable - another class that is the view, for each class that you'd need to view. |
03:46 | <&Derakon> | Mm, backing up a bit. |
03:46 | <&Derakon> | What I'm actually drawing here is a Prompt, i.e. a request for the user to supply more information. This comes with associated data, e.g. showing the user the items in their inventory and asking them to select one. |
03:46 | <&Derakon> | Only one of these is ever drawn at a time. |
03:46 | <&Derakon> | It overlays the main game view. |
03:46 | <~Vornicus> | Or... something like that. You do on the one hand need to separate the view from the model... but on the other hand you should generally let objects handle their own view. |
03:47 | <~Vornicus> | handle their own, uh. THings that are associated directly with them. |
03:47 | <&Derakon> | And the object is instanced, and then resolved, in a single game turn, so they don't stick around. |
03:47 | <&Derakon> | Somewhere I need to handle the mapping of Prompt type to how to display that Prompt. |
03:47 | <&Derakon> | Without the Prompt itself needing to know anything about the display layer. |
03:49 | <~Vornicus> | Hm |
03:53 | <~Vornicus> | Okay how do you invoke a prompt? Would it be wise to invoke a Generic Prompt, or are you invoking a Specific Prompt in all situations? |
03:54 | <~Vornicus> | If a Specific Prompt, then just subclass Prompt (or, perhaps, instantiate prompt and call its fill_shit_in method appropriately) with each of the SpecificPrompts |
03:54 | <&Derakon> | Game is waiting for input -> input is provided to Listener(s) -> Listener decides, based on input, it needs more information -> returns Prompt. |
03:54 | <&Derakon> | I have subclassed Prompt for all the different "I need more information" types I have. |
03:54 | <&Derakon> | E.g. "select item from list", "select direction", "select target for projectile", etc. |
03:54 | <&Derakon> | Each of those is a subclass of Prompt. |
03:54 | <~Vornicus> | well I see a bunch of lists there. |
03:54 | <&Derakon> | The generic Prompt class is never instanced. |
03:55 | <&Derakon> | A NetHack prompt would also need to support e.g. "provide an answer to this riddle" or "scrawl this in the dust on the floor". |
03:56 | <~Vornicus> | Okay, so now you've got... two or maybe if we're liberal three prompt types. |
03:56 | <&Derakon> | ...how do you figure? |
03:56 | <~Vornicus> | I see List, String, and possibly Direction |
03:56 | <&Derakon> | "Select target" requires the user to select a square on the map. Could be any square. That's not something a list can support. |
03:56 | <~Vornicus> | Okay, that's four then. |
03:57 | <&Derakon> | There's also the boolean YesNoPrompt, but that's about as trivial as they get. |
03:58 | <~Vornicus> | All right. So... we have a prompt. Prompt takes on a type of response it wants, and also a string that describes what you're doing: "WHat do you reply?" "Where do you want to throw the bomb?" |
03:58 | <&Derakon> | And a few other attributes, depending. |
03:58 | <&Derakon> | A callback function for when an answer is provided. |
03:59 | <&Derakon> | A container of things to select from, if applicable. |
04:01 | | Kindamoody[zZz] is now known as Kindamoody |
04:08 | <&Derakon> | So any thoughts, now that you've a better understanding of the program structure? |
04:09 | | * Vornicus thinkthinkthinks |
04:11 | <~Vornicus> | You know at this point I think your /best/ bet might be to have each different, uh, user agent, implement the prompts itself. |
04:11 | <~Vornicus> | Which is to say that when you deploy the curses mode pyrel you'll have one prompts module, and when you deploy the falcon's eye or whatever pyrel you'll have a different one. |
04:12 | <~Vornicus> | I mean this is literally what import ... as ... is for. |
04:12 | | Kindamoody is now known as Kindamoody|gaming |
04:12 | <&Derakon> | The as-yet hazy thought was that the Prompts are mostly for handling callbacks and decision-making; the "input" they accept is nebulously-defined. |
04:13 | <&Derakon> | So e.g. for a mouse-driven game, the display / input layer would be responsible for mapping a mouse click to the item clicked on, and then would say "Hey, ItemListPrompt, the user chose item 5". |
04:13 | <&Derakon> | So the Prompts still don't need anything specific to the UI. |
04:15 | <&Derakon> | Honestly the "display layer has a mapping of prompt types to how to display that prompt" / "input layer has a mapping of prompt types to how to process input for those prompts" system seems like it would work well. |
04:15 | <&Derakon> | If I could just set up the mapping properly. |
04:19 | <~Vornicus> | I don't... I... |
04:19 | <~Vornicus> | No, this is what modules are for. |
04:20 | <~Vornicus> | Well, polymorphous modules. |
04:21 | <&Derakon> | So you want me to subclass each Prompt type for each different display layer? |
04:22 | | himi [fow035@D741F1.243F35.CADC30.81D435] has joined #code |
04:22 | | mode/#code [+o himi] by ChanServ |
04:22 | <~Vornicus> | What |
04:22 | <~Vornicus> | Why are you loading all your display layers at once, no. |
04:22 | <~Vornicus> | You /create/ each prompt type for each different display layer. |
04:23 | <&Derakon> | I think we're miscommunicating. |
04:23 | <&Derakon> | I'm saying, okay, so I have prompt.py, it defines the basics for each Prompt. |
04:24 | <~Vornicus> | The prompt types are only defined inside the display layers. |
04:24 | <&Derakon> | Then I make, e.g., gui.prompts.asciiPrompt for ASCII display mode, which subclasses each Prompt subclass in prompt.py and adds functions for drawing them. |
04:24 | < RichyB> | The -clrf option to openssl s_client isn't the single most useful thing in the entire universe, but it is indeed very useful. |
04:24 | <&Derakon> | Vorn: ehhh...problem. |
04:24 | <&Derakon> | The game logic needs to know which kind of prompt to create. |
04:24 | <~Vornicus> | Der, this is a dynamically typed language. |
04:24 | < RichyB> | openssl s_client -connect secure.somesite.com:443 -clrf # is like netcat, for TLS :) |
04:24 | <~Vornicus> | It'll find it~ |
04:24 | <&Derakon> | So unless I'm going to hand that off to some kind of "prompt dispatcher"... |
04:24 | <~Vornicus> | No. |
04:24 | <~Vornicus> | YOu hand that off to the module import system. |
04:25 | <&Derakon> | Like, the Listener says "Okay, I want to use an item. Which item do I use?" and then it needs to create an ItemListPrompt. |
04:25 | <~Vornicus> | And it finds ItemListPrompt in the ui module. |
04:25 | <&Derakon> | If we're attaching display/input handling logic to the Prompt, then it has to create the right kind of ItemListPrompt, by your logic by handing that off to the import statement. |
04:25 | <~Vornicus> | Which at the beginning of the game you imported |
04:25 | < RichyB> | Why aren't you asking your display object to hand you an appropriate prompt? |
04:26 | <~Vornicus> | Like this: import snakeeyesui as ui |
04:26 | <~Vornicus> | or like this: import cursesui as ui |
04:26 | < RichyB> | Since prompt handlers are pretty much 1:1 with display types, I mean. You'll have one for the terminal, one for X11... |
04:26 | <&Derakon> | Richy: read up. |
04:26 | <~Vornicus> | or like this: import ajaxui as ui |
04:26 | <&Derakon> | Symbolically there are UI-agnostic prompt types. |
04:26 | <&Derakon> | Roughly corresponding to the kinds of questions we want to ask the user, which are UI-invariant. |
04:26 | <&Derakon> | Handling the prompts is UI-specific. |
04:27 | <&Derakon> | And Vorn: so do I have to do that "import foo as bar" in every module that wants to deal with these things? |
04:27 | <~Vornicus> | Yes, but their handlers - literally everything they do except their signatures - are the vast majority of their code |
04:28 | < RichyB> | So put a bunch of methods on your display object that return text prompts, boolean prompts, sexy prompts with bells on.. |
04:28 | <&Derakon> | ...I guess I could do something like "import gui; gui.setDisplayType("ascii")" at the start of the program...and then set things up so I could later do "import gui.prompt" and get the appropriate sub-module. |
04:28 | <&Derakon> | That seems...unpleasant. |
04:28 | <&Derakon> | But at least the main game engine wouldn't need to know what the UI is doing. |
04:28 | <~Vornicus> | In fact the only thing you need to do is call them with the appropriate stuff and they'll get back to you as appropriate |
04:28 | <~Vornicus> | and these are prompts. They're modal. You can block on them, it's all right. |
04:29 | <&Derakon> | Uh, what. |
04:29 | < RichyB> | import gui.ascii; display = gui.ascii.Ascii(); print display.prompt_for_line_of_text() |
04:29 | <&Derakon> | I mean, yes, of course I'm blocking on Prompts. When one is active, all input is intercepted to go to it instead. |
04:30 | <&Derakon> | RichyB: so in other words, have, effectively, a global PromptFactory singleton that knows what kind of UI we're using and can generate appropriate Prompts on demand. |
04:31 | <~Vornicus> | Kinda need it anyway: you only have one display. |
04:31 | <&Derakon> | Right, but passing it around all the time gets tedious. |
04:33 | < RichyB> | Separate the issue of whether you use objects around properly or whether you stuff them into singletons like some a turd in someone else's backpack out. |
04:33 | < RichyB> | Just... send the request for information to a module that has a chance of dealing with it. |
04:34 | < RichyB> | Since your mechanism for how to prompt the user for information is dependent on which display is in use, you're best off asking the display. |
04:35 | <&Derakon> | I'm well aware of that, thank you. |
04:35 | <&Derakon> | The display hands off input to the Prompts already, but after that input has been appropriately "symbolized", I guess you'd say. |
04:36 | <&Derakon> | E.g. instead of handing the Prompt "user clicked on coordinates (X, Y)" it says "user selected item 5". |
04:36 | <&Derakon> | Now I'll grant that the decision of how to map (X, Y) to "item 5" would ideally be part of the Prompt object, but I'm not convinced that stuffing the entirety of the Prompt into the display layer is the right way to accomplish that. |
04:37 | <~Vornicus> | It's the only way to accomplish that. |
04:37 | <~Vornicus> | Well, okay, it's not, but the other ways suck. |
04:37 | <~Vornicus> | Look at it this way: your display layer is the view and the controller. |
04:41 | <~Vornicus> | This prompt - displaying a request for a user choice, and then returning the result of that choice to the engine - is literally a view part and a controller part. |
04:41 | <~Vornicus> | There isn't a model behind it. |
04:42 | <~Vornicus> | There's nothing there that suggests that you'd want an interface-independent class here, because it is literally nothing but interface. |
04:43 | <&Derakon> | Mm, fair point. |
04:54 | | RichyB [richardb@Nightstar-3b2c2db2.bethere.co.uk] has quit [[NS] Quit: Leaving] |
05:00 | <~Vornicus> | (and since the engine doesn't need to work you don't need to go all callbackacious - you can just block the engine because it's not about to do anything.) |
05:00 | <&Derakon> | No, the callbacks are still needed so the engine can find out what to do with the user's response. |
05:01 | <&Derakon> | Equip this item? Drop it? Invoke it? Destroy it? |
05:01 | <&Derakon> | I mean, I get what you're saying -- that it should be like "selection = getAnswerFromUser()" and getAnswerFromUser blocks until it has the answer. |
05:02 | <&Derakon> | In practice I don't think the UI can actually work that way. |
05:03 | <&Derakon> | At the very least I'd need to make the system multithreaded. |
05:05 | <~Vornicus> | Yeah, you're probably right - you have events coming in. |
05:06 | <~Vornicus> | --and not all of them are necessarily handled by the prompt: you could find yourself wanting to, say, zoom the map or something. |
05:15 | | iospace is now known as iospacedout |
06:09 | <~Vornicus> | On the other hand, your engine code for that situation looks more like, well, you kind of have to stop engine execution until the prompt is done. |
06:09 | <&McMartin> | Given that this is fundamentally a turn-based game, it seems like the model should be made entirely of callbacks, with messages sent to the view about what to do next. |
06:10 | <~Vornicus> | mmm, there's often in this sort of game a heartbeat timer - if you're sitting around, still still happens every few seconds. |
06:11 | <~Vornicus> | This I say is Fucking Annoying |
06:11 | <~Vornicus> | but it exists nevertheless |
06:13 | <&Derakon> | No, Pyrel is entirely turn-based. |
06:13 | <&Derakon> | Since it's based on Angband, which is as well. |
06:13 | <&Derakon> | (That said, it's not remotely difficult to change a turn-based game into a clocked game where turns happen every X time units) |
06:13 | <&Derakon> | (There's a multiplayer Angband which does this. You learn to rely heavily on command hotkeys) |
06:14 | <~Vornicus> | Usually it's a heartbeat - if you're acting it'll reset the timer |
06:14 | <&Derakon> | Yeah, that's for singleplayer implementations. |
06:23 | | Derakon is now known as Derakon[AFK] |
06:56 | | Kindamoody|gaming is now known as Kindamoody |
07:10 | | Rhamphoryncus [rhamph@Nightstar-5697f7e2.abhsia.telus.net] has joined #code |
07:17 | | Kindamoody is now known as Kindamoody|afk |
07:21 | | celticminstrel [celticminst@Nightstar-05d23b97.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
07:38 | | himi [fow035@D741F1.243F35.CADC30.81D435] has quit [Ping timeout: 121 seconds] |
07:39 | | Vash [Vash@Nightstar-e8057de2.wlfrct.sbcglobal.net] has quit [[NS] Quit: I lovecraft Vorn!] |
08:04 | | Kindamoody|afk [Kindamoody@Nightstar-05577424.tbcn.telia.com] has quit [Ping timeout: 121 seconds] |
09:37 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code |
09:37 | | mode/#code [+o himi] by ChanServ |
09:44 | | RichyB [richardb@Nightstar-3b2c2db2.bethere.co.uk] has joined #code |
09:46 | | You're now known as TheWatcher |
10:46 | | Attilla [Obsolete@Nightstar-36d1ef0e.as43234.net] has joined #code |
11:48 | | iospacedout is now known as iospace |
13:04 | | iospace is now known as ioGONE |
14:09 | | celticminstrel [celticminst@Nightstar-05d23b97.cable.rogers.com] has joined #code |
14:27 | | ioGONE is now known as iospace |
14:39 | | Nemu [NeophoxProd@Nightstar-63f6875b.asahi-net.or.jp] has joined #code |
15:22 | | Nemu [NeophoxProd@Nightstar-63f6875b.asahi-net.or.jp] has quit [Ping timeout: 121 seconds] |
15:25 | | Nemu [NeophoxProd@Nightstar-44bb7e52.asahi-net.or.jp] has joined #code |
15:36 | | Nemu [NeophoxProd@Nightstar-44bb7e52.asahi-net.or.jp] has quit [Connection reset by peer] |
17:07 | < Rhamphoryncus> | oh, a petty coding style quandary. before doing a div() (to get quotient and remainder) I need to test range. Should I check the easy route and do abs() or should I check positive and negative forms separately? |
17:08 | < Rhamphoryncus> | Noting that the range is something like -6 .. 5, and I'm shifting up before passing to div(). This ensures I'm always in the positive range and thus getting useful floor division |
17:09 | < Rhamphoryncus> | The catch to the quandary is that although the two highest and lowest quotients may happen, it's only barely, so the -6 should never happen in practice. |
17:12 | < iospace> | haha |
17:13 | < iospace> | guess the quality people are pissed |
17:13 | < iospace> | we got a company wide email saying "hi, you have to re-read the product tracking training!" |
17:14 | < Rhamphoryncus> | heh |
18:08 | | Vash [Vash@Nightstar-e8057de2.wlfrct.sbcglobal.net] has joined #code |
18:08 | | mode/#code [+o Vash] by ChanServ |
18:14 | <~Vornicus> | Rham: I don't understand your description |
18:14 | | * Rhamphoryncus attempts a rhamph to english translation |
18:14 | < Rhamphoryncus> | invariant(y >= this->globe.subdivision * -3 && y < this->globe.subdivision * 3, |
18:14 | < Rhamphoryncus> | "y out of range: %d violates %d <= y < %d", y, this->globe.subdivision * -3, this->globe.subdivision * 3); |
18:14 | < Rhamphoryncus> | invariant(z >= this->globe.subdivision * -3 && z < this->globe.subdivision * 3, |
18:14 | < Rhamphoryncus> | "z out of range: %d violates %d <= z < %d", z, this->globe.subdivision * -3, this->globe.subdivision * 3); |
18:14 | < Rhamphoryncus> | But pasting code is easier :) |
18:15 | < Rhamphoryncus> | I could replace that check with std::abs(x) < this->globe.subdivision * 3 |
18:17 | < Rhamphoryncus> | It's not strictly the same, but the actual intended range is more like y >= this->globe.subdivision * -2 - 1 |
18:18 | < Rhamphoryncus> | Anyway, I did go with the neurotic yet verbose option, as seen in the paste |
18:21 | < Rhamphoryncus> | My next problem using the remainder from the division of y,z above as weights of 4 vertices arranged in a square.. except it's not really a square, it's a pair of triangles, so a max of 3 should be applied at any time |
18:27 | < Rhamphoryncus> | The greater context to all this is a series of cheats. I'm taking my pentakis dodecahedron, chopping a cap off the top, then cutting a slit in the side and flattening it out into a hexagonal grid. The gap, then gets filled with a duplicate section |
18:28 | < Rhamphoryncus> | After that I take the hexagonal grid, break it down into a triangular grid, then squish two corners together until I get right angle and can pair triangles up into squares |
18:29 | < Rhamphoryncus> | Once I have the squares I can create a simple 2d array storing the 4 corners of each square, which can be used to figure out which macrovertices to apply to any of the hexagon's vertices |
18:32 | < Rhamphoryncus> | Which is where I was. Take the 4 macrovertices, then apply the remainder as the weights, but how do I apply them properly? |
18:33 | < Rhamphoryncus> | Hmm. Maybe it's simpler than I realized. Just treat them as barycentric coordinates and trust that despite all my distortions they still work out the same? |
18:40 | | Kindamoody|afk [Kindamoody@Nightstar-43e74247.cust.tele2.se] has joined #code |
18:40 | | mode/#code [+o Kindamoody|afk] by ChanServ |
18:41 | | Kindamoody|afk is now known as Kindamoody |
18:47 | | gnolaptop [lenin@Nightstar-b34df6ee.cust.bredbandsbolaget.se] has joined #code |
18:49 | | Kindamoody is now known as Kindamoody|afk |
18:50 | | gnolaptop [lenin@Nightstar-b34df6ee.cust.bredbandsbolaget.se] has quit [[NS] Quit: Gone] |
18:53 | | gnolaptop [lenin@Nightstar-9052668d.cust.bredbandsbolaget.se] has joined #code |
19:02 | | gnolaptop [lenin@Nightstar-9052668d.cust.bredbandsbolaget.se] has quit [[NS] Quit: Gone] |
19:04 | | cpux|2 [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code |
19:06 | | cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has quit [Ping timeout: 121 seconds] |
19:43 | | Netsplit *.net <-> *.split quits: ShellNinja, sshine, RichyB |
19:43 | | cpux|2 [cpux@Nightstar-c5874a39.dyn.optonline.net] has quit [Client closed the connection] |
19:43 | | cpux|2 [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code |
19:44 | | mac [NSwebIRC@Nightstar-fe8a1f12.il.comcast.net] has joined #code |
19:44 | | Netsplit over, joins: ShellNinja, sshine |
19:44 | | gruber [lenin@Nightstar-202a5047.priv.bahnhof.se] has joined #code |
19:44 | | Reivles [orthianz@3CF3A5.E1CD01.C6689C.33956A] has joined #code |
19:44 | | Netsplit over, joins: RichyB |
19:44 | | Orthia [orthianz@3CF3A5.E1CD01.C6689C.33956A] has quit [Ping timeout: 121 seconds] |
19:46 | | gnolam [lenin@Nightstar-202a5047.priv.bahnhof.se] has quit [Ping timeout: 121 seconds] |
19:53 | | mac [NSwebIRC@Nightstar-fe8a1f12.il.comcast.net] has left #code [""] |
19:55 | | Kindamoody|afk [Kindamoody@Nightstar-43e74247.cust.tele2.se] has quit [Ping timeout: 121 seconds] |
20:04 | | gruber is now known as gnolam |
20:14 | | Kindamoody|afk [Kindamoody@Nightstar-18389b83.cust.tele2.se] has joined #code |
20:14 | | mode/#code [+o Kindamoody|afk] by ChanServ |
20:14 | | Kindamoody|afk is now known as Kindamoody |
21:22 | | Kindamoody is now known as Kindamoody[zZz] |
21:36 | | FurryHelix [tamber@furryhelix.co.uk] has joined #code |
21:37 | | Tamber [tamber@furryhelix.co.uk] has quit [Connection reset by peer] |
21:52 | | cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code |
21:55 | | cpux|2 [cpux@Nightstar-c5874a39.dyn.optonline.net] has quit [Ping timeout: 121 seconds] |
22:03 | | Rhamphoryncus [rhamph@Nightstar-5697f7e2.abhsia.telus.net] has quit [Client exited] |
22:18 | | Clelia [Clelia@Nightstar-783df2d1.cable.virginmedia.com] has joined #code |
22:18 | < Clelia> | hello everyone |
22:20 | <&ToxicFrog> | 'evening |
22:20 | | Clelia [Clelia@Nightstar-783df2d1.cable.virginmedia.com] has quit [[NS] Quit: ] |
22:21 | | Clelia [Clelia@Nightstar-783df2d1.cable.virginmedia.com] has joined #code |
22:21 | < Clelia> | I wonder if i have come to right chat |
22:21 | <&ToxicFrog> | I don't know, what are you looking for? |
22:22 | < Clelia> | for some answers :D |
22:22 | < Clelia> | about encrypted text |
22:24 | < Clelia> | no? this is not place where I can get some smart advice about this topic? |
22:24 | < RichyB> | Then you wanted #cipher, not #code? ;) |
22:24 | < RichyB> | #code is nominally a place to discuss programming. |
22:24 | < Clelia> | codes, ciphers..... see? i dont get those things |
22:24 | < Clelia> | :D |
22:24 | < RichyB> | Lots of people here find cryptography interesting too though. |
22:24 | < Clelia> | but thanks...i will look for #cipher then |
22:25 | < RichyB> | I was joking about that bit. |
22:25 | < RichyB> | Codes are systems for assigning meanings to sequences of symbols. |
22:25 | <&ToxicFrog> | Clelia: there's no actual #cipher. This is a channel about programming, but there are some people with crypto knowledge in here. |
22:25 | < RichyB> | Ciphers are systems for transforming sequences of symbols in order to make them impossible for your enemies to discern. |
22:26 | < Clelia> | well...I have some text.... it was given to me in ASCII |
22:26 | < Clelia> | I translated it to text |
22:26 | | iospace is now known as io\gone |
22:26 | < Clelia> | and now I need to deal with text |
22:26 | < Clelia> | but i dont even know what kind of encryption it is |
22:28 | < RichyB> | Have you tried the most obvious one, rot13? |
22:28 | < Clelia> | yes |
22:28 | < Clelia> | I tryed the ones google suggested ^^ |
22:28 | < Clelia> | a lot of them actually |
22:28 | < Clelia> | but the pattern of text seems weird |
22:29 | < Clelia> | I have no knowledge at all in this stuff, Im just really interested to resolve this thing |
22:29 | < rms> | You translated "ASCII" to "text" |
22:30 | < Clelia> | well yea.... message waas random numbers.... 80 32 64 ...etc |
22:30 | < rms> | You translated a hex-dump to text. Alright that's clearer |
22:31 | < rms> | What specificially did you need done? |
22:32 | < Clelia> | well..I ust know there is message that was given to me in ASCII |
22:32 | < RichyB> | To make the questions less vague, might I suggest pastebinning the text somewhere, unless it's something that you don't want anyone else to learn? |
22:32 | <&ToxicFrog> | If it's a simple substitution cipher, you could do a frequency attack on it. |
22:32 | < rms> | PROTIP: ASCII/"text" is redundant information here. |
22:33 | < rms> | Also I'm asking what you want the end result to be. |
22:33 | < Clelia> | I try with substitution....but with no resluts...I just want to know maybe Im heading in wrong way and spending time for nothing |
22:34 | < Clelia> | part of text I got - ZKVD UP SLLM P AHOD LAPYD VA ASBJPMMPK |
22:35 | < rms> | Oh, you have a coded message that you want to decode |
22:35 | < Clelia> | yes |
22:35 | < rms> | Well "P" is very likely "A" or "I" |
22:36 | < rms> | Assuming that's standard english |
22:36 | < Clelia> | it is english |
22:36 | <&ToxicFrog> | rms: assuming english cleartext and a simple substitution cipher |
22:36 | < rms> | Yeah |
22:36 | | FurryHelix is now known as Tamber |
22:36 | | mode/#code [+o Tamber] by ChanServ |
22:36 | <&ToxicFrog> | ...and that " " is the same character in both clear and ciphertext |
22:37 | < rms> | Oh yeah |
22:37 | < rms> | That'd be assholish |
22:37 | | * Vornicus hunts around for a words file. |
22:37 | < Clelia> | there in text is "..." too |
22:38 | < Clelia> | just some things makes me thing its not so simple |
22:38 | < Clelia> | like - text end with "P" alone |
22:38 | <&ToxicFrog> | Vornicus: /usr/share/dict/words |
22:38 | <&ToxicFrog> | Clelia: so pastebin it |
22:38 | <~Vornicus> | Right except that doesn't exist on windows~ |
22:38 | < Clelia> | who would write message who ends with "a" or "I" |
22:38 | < rms> | $ echo `grep ^.[ai]$ /usr/share/dict/cracklib-small ` |
22:38 | < rms> | ca ga ha hi ia ii la ma mi pa pi ri sa ta ti va vi wa wi xi |
22:39 | < Clelia> | pastebin.....whats that? |
22:39 | <&ToxicFrog> | A website where you paste text and have it displayed |
22:39 | <&ToxicFrog> | Like, say, gist.github.com |
22:39 | <&ToxicFrog> | Useful for sharing source code and whatnot |
22:40 | <~Vornicus> | Clelia: okay, so that gives us a couple options: the big one is that the text is in fact backwards. |
22:41 | < Clelia> | I had that idea too |
22:41 | < rms> | $ echo `grep ^[ai].$ /usr/share/dict/cracklib-small ` |
22:41 | < rms> | ac ad ah ak al am an ar as at ax az ia id if ii il in io iq ir is it iv ix |
22:42 | < Clelia> | but it looks like I could resolve it with substitution right? |
22:42 | < Clelia> | so I willjust keep doing that |
22:45 | <~Vornicus> | yeah. note that 26! is quite large, approximately 400 nonillion, approximately the number of non-dairy creamers it would take to create the entire earth. |
22:46 | <~Vornicus> | start with one the other words - that 9 letter job there with 7 different letters, there's not nearly that many different possibilities for that. |
22:47 | < Clelia> | well...thank you guys :) I will try more, maybe it will make sense at some point |
22:48 | | Clelia [Clelia@Nightstar-783df2d1.cable.virginmedia.com] has quit [Client closed the connection] |
23:44 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has quit [Ping timeout: 121 seconds] |
--- Log closed Thu Aug 09 00:00:33 2012 |