-
8 votes
-
status.im sponsors full-time development of the open source language Nim
8 votes -
Weekly Programming Challenge - making our own data format
Hi everyone! There was no coding challenge last week, so I decided to make one this week. If someone wants to make his own challenge, wait few days and post it. I'm running out of ideas and I'd...
Hi everyone! There was no coding challenge last week, so I decided to make one this week. If someone wants to make his own challenge, wait few days and post it. I'm running out of ideas and I'd like to keep these challenges running on Tildes.
Everyone here knows data formats - I'm talking about XML or JSON. The task is to make your own format. The format can be as compact as possible, as human-readable as possible, or something that's really unique. Bonus points for writing encoder/decoder for your data format!
How do you handle long texts? Various unicode characters? Complex objects? Cyclic references? It's up to you if you make it fast and simple, or really complex.
I'm looking forward to your data formats. I'm sure they will beat at least csv. Good luck!
8 votes -
Dota2 - OpenAI Five vs High MMR players
8 votes -
Michael MacInnis: Oh a new Unix shell - BSDCan 2018
6 votes -
#showdev share your current project
Do you have any project that you are currently working on that you would like to showcase and/or need people to test?
10 votes -
The Bullshit Web
8 votes -
What are you working on this weekend?
This is a thread to discuss the projects you have planned for the weekend. Previous threads: 2018-06-16
28 votes -
Programming Challenge: creative FizzBuzz
Pretty standard: Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which...
Pretty standard:
Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.
The twist: come up with the most creative or unusual way to solve this in your language of choice.
39 votes -
Programming Challenge: Freestyle textual analysis.
I just realized that I completely glossed over this week's programming challenge. For this week, let's do something more flexible: write a program that accepts a file as input--either through a...
I just realized that I completely glossed over this week's programming challenge. For this week, let's do something more flexible: write a program that accepts a file as input--either through a file name/path or through standard input--and perform any form of analysis you want on its contents. That's it!
For instance, you could count the occurrences of each word and find the most common ones, or you could determine the average sentence length, or the average unique words per sentence. You could even perform an analysis on changes in words and sentence structure over time (could be useful for e.g. poetry where metre may play an important role). You can stick with simple numbers or dive right into the grittiest forms of textual analysis currently available. You could output raw text or even a graphical representation. You could even do a bit of everything!
How simple or complex your solution ends up being is completely up to you, but I encourage you to challenge yourself by e.g. learning a new language or about different textual analysis techniques, or by focusing on code quality rather than complexity, or even by taking a completely different approach to the problem than you ordinarily would. There are a lot of learning opportunities available here.
11 votes -
Codingame.com lets you write programs to play games.
2 votes -
Programming Challenge - Let's build some AI!
Hi everyone! In this challenge, we will build simple genetic algorithm. The goal is to create genetic algorithm that will learn and output predefined text ("Hello World!"). The goal can be...
Hi everyone! In this challenge, we will build simple genetic algorithm.
The goal is to create genetic algorithm that will learn and output predefined text ("Hello World!").
The goal can be achieved with any language and you'll need just simple loops, collection and knowledge how to create and use objects, even beginners can try to complete this challenge.
How?
I'll try to explain it as best as I can. Genetic algorithms are approximation algorithms - they often do not find the best solution, but they can find very good solutions, fast. It's used when traditional algorithms are either way too slow, or they even don't exist. It's used to, for example, design antennas, or wind turbines. We will use it to write "Hello World".
First of all, we define our
Entity
. It is solution to given problem, it can be list of integers that describe antenna shape, decision tree, or string ("Hello World"). Each entity contains the solution (string solution
) and fitness function. Fitness function says, how good our entity is. Our fitness function will return, how similar is entitysolution
text to "Hello World" string.But how will the program work? First of all, we will create list of entities
List<Entity>
. We will make, for example, 1000 entities (randomly generated). TheirEntity.solution
will be randomized string of length 11 (because "Hello World" is 11 characters long).Once we have these entities, we will repeat following steps, until the best entity has
fitness == 1.0
, or 100% similarity to target string.First of all, we compute fitness function of all entities. Then, we will create empty list of entities of length 1000. Now, we will 1000-times pick two entities (probably weighted based on their fitness) and combine their strings. We will use the string to create new entity and we will add the new entity to the new list of entities.
Now, we delete old entities and replace them with entities we just made.
The last step is mutation - because what if no entity has the "W" character? We will never get our "Hello World". So we will go through every entity and change 5% (or whatever number you want) of characters in their solution to random characters.
We let it run for a while - and it is done!
So to sum up what we did:
entities <- 1000 random entities while entities.best.fitness < 1: for every entity: compute fitness newEntities <- empty list 1000-times: choose two entities from "entities", based on their fitness combine solutions of these entities and make newEntity newEntities.add(newEntity) for every entity: mutate // Randomly change parts of their strings print(entities.best.solution) // Hello World!
Now go and create the best, fastest, and most pointless, genetic algorithm we've ever seen!
23 votes -
Rockstar is a dynamically-typed Turing-complete programming language, designed for creating computer programs that are also song lyrics
11 votes -
Python has brought computer programming to a vast new audience
11 votes -
Programming Challenge: Construct and traverse a binary tree.
It's that time of week again! For this week's programming challenge, I thought I would focus on data structures. Goal: Construct a binary tree data structure. It may handle any data type you...
It's that time of week again! For this week's programming challenge, I thought I would focus on data structures.
Goal: Construct a binary tree data structure. It may handle any data type you choose, but you must handle sorting correctly. You must also provide a print function that prints each value in the tree on a new line, and the values must be printed in strictly increasing order.
If you're unfamiliar with this data structure, it's a structure that starts with a single "root" node, and this root can have a left child, right child, both, or neither. Each of these child nodes is exactly the same as the root node, except the root has no parent. This branching structure is why it's called a tree. Furthermore, left descendants always have values smaller than the parent, and right descendants always have larger values.
12 votes -
My Conversation With a Coding Nun
3 votes -
Starters, Finishers, and Large Teams
7 votes -
The 128 Language Quine Relay
15 votes -
Programming Challenge: Markov Chain Text Generator
Markov Chains are a stochastic model describing a sequence of possible events in which the probability of each event depends only on the state attained in the previous event. By analyzing a...
Markov Chains are a stochastic model describing a sequence of possible events in which the probability of each event depends only on the state attained in the previous event. By analyzing a document in some way and producing a model it’s possible to use this model to generate sentences.
For example, let’s consider this quote:
Be who you are and say what you feel, because those who mind don't matter, and those who matter don't mind.
Let’s start with a seed of
be
, which there is only one of in this text and it’s following word iswho
. Thus, a 100% chance of the next state beingwho
. Fromwho
, there are several next states:you
,mind
, andmatter
. Since there are 3 options to choose from, the next state has a 1/3 probability of each. It’s important that if there were for example two instances ofwho you
thenyou
would have a 2/4 probability of next state. Generate a random number and choose the next state, perhapsmind
and continue until reaching a full stop. The string of states we reached is then printed and we have a complete sentence (albeit almost certainly gibberish).Note: if we were in the state
mind
, our next two options would be.
ordon’t
, in which if we hit.
we would end the generation. (or not, up to you how you handle this!)To take it a step further, you could also consider choosing the number of words to consider a state. For example, two words instead of one:
those who
has two possible next states:who matter
orwho mind
. By using much longer strings of words for our states we can get more natural text but will need much more volume to get unique sentences.This programming challenge is for you to create a Markov Chain and Text Generator in your language of choice. The input being a source document of anything you like (fun things include your favourite book, a famous person’s tweets, datasets of reddit / tildes comments), and possibly a seed. The output being a sentence generated using the Markov Chain.
Bonus points for:
- Try it a bunch of times on different sources and tell us the best generated sentences
- Using longer strings of words for the state, or even having it be variable based on input
- Not requiring a seed as an input, instead implementing that into your Markov Chain (careful as infinite loops can occur without considering the seed)
- Implement saving the Markov Chain itself, as it can take very long to generate with huge documents
- Particularly Fast, efficient, short or unique methods
Good luck!
P.S A great place to find many large plain text documents for you to play with is Project Gutenberg.
17 votes -
Python 3.7 has been officially released!
25 votes -
What are you working on this weekend?
This is a thread to discuss what projects you're working on this weekend. (I've basically stolen this idea from Lobste.rs.)
15 votes -
Programming Challenge: Given a triangle of numbers, find the path from the top to the bottom of the triangle with the largest sum.
This problem is based on the Project Euler problem here. Goal: Given some input describing a triangle of numbers, find the path starting from the top-most row of the triangle and ending at the...
This problem is based on the Project Euler problem here.
Goal: Given some input describing a triangle of numbers, find the path starting from the top-most row of the triangle and ending at the bottom-most row of the triangle that contains the largest sum of all of the numbers along the path. You may only move downward and you must select an adjacent position to move to. Efficiency is not a requirement for completion.
Constraints:
- The first line of input for a triangle will be a single integer telling you how many rows the triangle will have.
- Each following line of input will be the next row of the number triangle, starting at the first row.
- For each line describing the number triangle, the individual numbers will be separated by a single space.
Note: The constraints above are to keep hard-coded triangles out of submitted solutions while also ensuring that all languages can equally handle this problem without annoying workarounds for lower-level languages. The consistency also makes it easier for beginners to review and understand someone else's code, and makes it easier to receive help if you get stuck. They're not necessarily required, but are highly encouraged.
Example input:
4 1 3 2 4 5 6 7 8 9 10
Corresponding triangle:
1 3 2 4 5 6 7 8 9 10
Expected result:
19
(1 + 2 + 6 + 10)Extra Credit: As noted on the Project Euler page, you can solve this using a brute force method, but it's incredibly inefficient. Specifically, a brute force solution would be O(2n) time (exponential). There exists a solution that can be solved in O(n2) time (quadratic). Find this solution.
13 votes -
Angular with PureScript
I have to do an assignment for university soon-ish, and it requires Angular. I'm not very fond of that framework specifically, but I would be interested in making it more interesting as a learning...
I have to do an assignment for university soon-ish, and it requires Angular. I'm not very fond of that framework specifically, but I would be interested in making it more interesting as a learning project. I've also recently discovered PureScript, which I have no experience with right now.
Searching online, I've purescript-angular, which hasn't been updated in years. I also couldn't find much else. Of course, I may be missing something simple (for instance, it's actually supported by default in Angular these days), so I wanted to ask if any of you know if this is possible, and if so, how?
6 votes -
Hard-won lessons: Five years with Node.js
4 votes -
Why doesn't Common Lisp see more usage?
Hey all, I've been studying Common Lisp recently, and as far as I can see, this is a pretty capable, mature language. Moreover, Lisp has been around since the 60s and it doesn't see much usage (as...
Hey all,
I've been studying Common Lisp recently, and as far as I can see, this is a pretty capable, mature language. Moreover, Lisp has been around since the 60s and it doesn't see much usage (as far as I'm aware) outside of Emacs Lisp and AutoLISP. What gives?17 votes -
What should replace Electron as a WORA framework?
2 votes -
How do you model complicated or tricky problems to solve them? What benefit do you get from using that model?
Everyone has their own way of visualizing a problem they're working on, and every strategy has some reason for being used. Some people prefer text (e.g. pseudocode) while others prefer diagrams,...
Everyone has their own way of visualizing a problem they're working on, and every strategy has some reason for being used. Some people prefer text (e.g. pseudocode) while others prefer diagrams, for example. What do you use to make problems easier to approach, conceptualize, and solve? Why that particular strategy rather than some other one? What kind of practical implementations of your strategy exemplifies the benefits of your strategy for modeling the problem?
6 votes -
How Did You Learn C++?
I'm a beginner-ish at c++ and cannot find any good places to learn it. I tried learning from the books but they didn't help that much.
7 votes -
Sphero spin-off Misty Robotics releases new sensor packed robot dev kit programmable in JavaScript
3 votes -
Is there currently any way to query data from Tildes? (such as JSON, RSS) For those of us who would like to look into developing third-party apps for this site.
Basically what the title says. I might like to look into making a third party Android/iOS app.
11 votes -
Most instructive/well made educational computer science/math videos?
What are some of your favorite videos that explain deep topics in depth? I've recently been on a 3blue1brown binge (youtube) and am looking for more videos of that ilk. Doesn't have to be a series...
What are some of your favorite videos that explain deep topics in depth?
I've recently been on a 3blue1brown binge (youtube) and am looking for more videos of that ilk. Doesn't have to be a series or a consistent uploader, one off videos are sometimes the best. Just thought I'd ask ~comp if there's anything in particular that comes to mind.
This is in part inspired by the video posted by /u/Deimos in the Technical Goals section of Tildes, titled Simplicity Matters
11 votes -
GitLab Ultimate and Gold now free for education and open source
26 votes -
William Byrd on "The Most Beautiful Program Ever Written"
4 votes -
Any programmers here? Do you care more for the code, the product, or both equally?
^
13 votes -
Visualizing Entropy in Binary Files
8 votes -
What is Software Engineering? (Go & Versioning, Part 9)
5 votes -
Programming challenge: undo this "Caesar" cipher.
Disclaimer: I'm a novice and this is a half baked idea Recap The Caesar cipher is fairly straight forward as it just shifts letters along by a set amount. This means that it's quite easy to brute...
Disclaimer: I'm a novice and this is a half baked idea
Recap
The Caesar cipher is fairly straight forward as it just shifts letters along by a set amount. This means that it's quite easy to brute force. There's only 25 offsets, after all. Try to decode this to see what i mean:
Plqfh 3 foryhv ri jduolf, dqg frpelqh lq d vpdoo erzo zlwk pdbrqqdlvh, dqfkrylhv, 2 wdeohvsrrqv ri wkh Sduphvdq fkhhvh, Zrufhvwhuvkluh vdxfh, pxvwdug dqg ohprq mxlfh. Vhdvrq wr wdvwh zlwk vdow dqg eodfn shsshu. Uhiuljhudwh xqwlo uhdgb wr xvh. Khdw rlo lq d odujh iublqj sdq ryhu phglxp khdw. Fxw wkh uhpdlqlqj 3 foryhv ri jduolf lqwr txduwhuv, dqg dgg wr krw rlo. Frrn dqg vwlu xqwlo eurzq, dqg wkhq uhpryh jduolf iurp sdq. Dgg euhdg fxehv wr wkh krw rlo. Frrn, wxuqlqj iuhtxhqwob, xqwlo oljkwob eurzqhg. Uhpryh euhdg fxehv iurp rlo, dqg vhdvrq zlwk vdow dqg shsshu. Sodfh ohwwxfh lq d odujh erzo. Wrvv zlwk guhvvlqj, uhpdlqlqj Sduphvdq fkhhvh, dqg vhdvrqhg euhdg fxehv.
bonus points for a program that takes the above text and outputs the shift I used without any human inputMy dumb idea (didn't work, my bad. They're in normal Caeser cipher now)
I like the simplicity of the shifting characters but having it always be in one direction, and always being the same offset makes it easy to notice the pattern and decode.
If we have the shift value determined by the length of the current word, and the direction of it dependent on if it's a vowel or a consonant.
a pirate is nothing without his ship
becomes
b jolgnk kq gvmapgz ppmavbm elp odml
so we still have a visibly Caesar-y cipher, but we'll know it's not a true Caesar cipher.
The offset changes for every word and then is applied based on each letter in the word. If it's a vowel, then the encoded value is shifted upwards but if not, it slides down.For the purposes of the below tomfoolery; prime numbers are consonants and the rest are vowels.
A Valley Without Wind 1 and 2 Steam Key: B qjsbuf jt opuijoh xjuipvu ijt tijq FWR0H-GQM7B-5344H Aces Wild: Manic Brawling Action: C rktcvg ku pqvjkpi ykvjqwv jku ujkr K5R0H-29NPM-A3OTE Age of Empires Legacy Bundle: D sludwh lv qrwklqj zlwkrxw klv vkls 69PQW-UY3H7-7SQWT AI War + 4 DLC packs & Tidalis Steam Key: E tmvexi mw rsxlmrk amxlsyx lmw wlmt KO99D-73JZ2-XNIK3 AI War: Vengeance Steam Key: F unwfyj nx stymnsl bnymtzy mnx xmnu 7M2I8-I99N9-6E9F2 Alan Wake Collector's Edition Steam Key: G voxgzk oy tuznotm coznuaz noy ynov 6ZNJ5-BIVFN-6ZSDZ Alan Wake's American Nightmare Steam Key: H wpyhal pz uvaopun dpaovba opz zopw 7RERD-4ACYN-TCDQ2 Amnesia: Dark Descent Steam Key: I xqzibm qa vwbpqvo eqbpwcb pqa apqx VGEO8-OU48X-MU7BL Anachronox: J yrajcn rb wxcqrwp frcqxdc qrb bqry 3589L-YGF9V-NKGW0 Anodyne: K zsbkdo sc xydrsxq gsdryed rsc crsz 9HW7H-7Z73Z-6302D Anomaly Defenders: L atclep td yzestyr hteszfe std dsta ICPIB-M63TI-9Y96V Anomaly Korea: M budmfq ue zaftuzs iuftagf tue etub QMPZ2-JUK8B-JRK3V Anomaly Korea: N cvengr vf abguvat jvgubhg uvf fuvc 30R9T-C02AA-7DQLG Anomaly Warzone Earth: O dwfohs wg bchvwbu kwhvcih vwg gvwd 38UM9-Z26PH-Q4VAU Anomaly Warzone Earth Mobile Campaign: P exgpit xh cdiwxcv lxiwdji wxh hwxe 54TYN-AU26Q-5AGGY Aquaria Steam key: Q fyhqju yi dejxydw myjxekj xyi ixyf 3853A-YSB4J-6243A Awesomenauts: R gzirkv zj efkyzex nzkyflk yzj jyzg DH9T5-BWOQC-KB6TB Awesomenauts: S hajslw ak fglzafy oalzgml zak kzah RNRJ0-CPT4O-S9UHE Awesomenauts Cluck Costume: T ibktmx bl ghmabgz pbmahnm abl labi VOWWW-QTR3Q-EAS9J
These are encoded using a Caeser shift. The line under the title is a fixed phrase (a pirate is nothing without his ship) for aid in the bonus points
I can post my code if it turns out to be unsolvable (like a bug https://trinket.io/python/dabf2b61f9), but if not; I can also keep going from letters A to Y (sans U) over the weeks with my humble bundle reserves (plaintext or not). I've had these keys for far too long and I'm never going to actually use them, but I also noticed a surge of keys being donated here so figured I might as well change it up.
Have fun
9 votes -
What trick/pattern/concept/whatever did you adopt that has improved your code quality?
One big thing that has made maintenance of my older code easier has been considering the concept of cyclomatic complexity. In particular, limiting conditional checks to exceptional cases as much...
One big thing that has made maintenance of my older code easier has been considering the concept of cyclomatic complexity. In particular, limiting conditional checks to exceptional cases as much as is reasonable has made it easier to focus on the "happy" path of code execution and easily track down the errors, and the limited nesting depth has made things easier to read as well. Overall, my code remains relatively flat and I'm not branching through layers of logic trying to track down a simple bug.
What are some simple things you do to keep your code from being a massive headache long-term?
26 votes -
Parabola.io - Graphical Automation
8 votes -
RSoC: Porting tokio to Redox
5 votes -
The Power of Prolog
4 votes -
Source and API
If it's too early in development for these questions, let me know. Is the source available yet? If so, where is it hosted? If not, when will it be dropped? Third party API: I know the docs say...
If it's too early in development for these questions, let me know.
- Is the source available yet? If so, where is it hosted? If not, when will it be dropped?
- Third party API: I know the docs say that the browser should be the client. However, after using tildes for awhile on mobile, it's quite... interesting. The site does really well on mobile, don't get me wrong, but it's missing the system feel that makes the experience pleasant. Honestly, one of the big reasons I was drawn to reddit was the ample support (by the third party) for mobile clients. I'd love to get started on a client for ~.
14 votes -
Chat with Rob Walling, founder of Drip, serial entrepreneur
5 votes -
What is the most sophisticated piece of software code every written?
34 votes -
My random notes for Nim lang
-> Nim notes <- Some background I am learning a new programming language Nim. As many would do, I also take my own notes as I am learning it, running little example by myself, etc. .. but I doing...
-> Nim notes <-
Some background
I am learning a new programming language Nim. As many would do, I also take my own notes as I am learning it, running little example by myself, etc.
.. but I doing that a bit differently.
-
I take notes in Emacs Org mode. Org mode has a feature set called Org Babel. That allows one to document the code snippets, and also run them directly in that document, and insert their output results below them -- Notes in Org
This also helps me document regression of the language behavior between different Nim versions of any, as the exact outputs are documented too. After each major Nim update, I press a single binding (
C-v C-v b
) in Emacs, and all the output blocks get recalculated. -
But not everyone uses Emacs and Org mode. So to be able to share them to a wider audience, I need to export (Org term) that to a format like HTML, PDF, or Markdown..
-
Hugo is a really fast static site generator that uses Markdown as one of the primary content formats. It parses that to HTML using a Go Markdown library called Blackfriday.
-
As my notes are in Org mode, and converting them to HTML via Hugo needs them to be in Blackfriday compatible Markdown (which is almost like GitHub flavored Markdown), I starting working on an Emacs Org mode package
ox-hugo
about a year back. Using that, this Markdown file is generated. Hugo natively supports a subset of Org, but I needed to write this package to use the full power of Org mode. -
Hugo then takes that Markdown and generates the final Nim notes page in HTML.
In the end, I have something that ties together all things of my interest: Nim, Emacs, Org mode and Hugo :)
8 votes -
-
Code Vigorous' PyCon US 2018 Wrapup
8 votes -
Crafting Interpreters - Chapter 16 - Scanning on Demand
12 votes -
Fully Automated Luxury Communism Newsletter
5 votes -
Man is charged with hacking West Point and government websites
6 votes