4 ms·
Learning new environments can be painful so it’s good it starts off easy. I’m trying to solve them with Swift Playgrounds on the iPad, for example. And I can’
by melling 7y ago
Learning new environments can be painful so it’s good it starts off easy.
I’m trying to solve them with Swift Playgrounds on the iPad, for example. And I can’t figure out how to create a simple text file for the data.
- melling 7y agoI solved the first part using the examples. Swift is nice. func calcFuel(_ mass:Int) -> Int {mass / 3 - 2} let z0 = massList.map(calcFuel).reduce(0, +) or simply ... let z1 = massList.map({$0 / 3 - 2}).reduce(0, +) Any idea how to read the data on the iPad?
- chii 7y agoi just copy/pasted the data into the source instead of dealing with IO.
- melling 7y agoI had to create the plain text input file in iCloud with my Mac then insert it (Big +, third option) in the iPad’s Swift Playground. Need a text app that will save to Files for a complete iPad solution. Also, a Swift Playground bug reverted my final solution to the code from my first few minutes, losing my code. That was frustrating... Anyway, a complete Swift Playground on iPad solution: import UIKit let path = Bundle.main.url(forResource: "input01", withExtension: "txt") var text = try String(contentsOf: path!, encoding: .utf8) let massList:[Int] = text.components(separatedBy: .whitespacesAndNewlines).compactMap({Int($0)}) let z1 = massList.map({$0 / 3 - 2}).reduce(0, +) print("\(z1)")
- brantonb 7y agoYou can option+tap a link in Safari to download to Files. Hold down the command key to see available shortcuts.
- ulucs 7y agoI copy my session cookie and send a web request for the inputs. I should write some sort of caching code though..
- brantonb 7y agoI started last year using Swift Playgrounds. I was lazy and just pasted the input into a multi-line string. I had to switch away from Playgrounds after a couple of days because it would crash due to memory issues. It traces every line of execution and the intermediate values of all variables. I really enjoyed doing the challenges in Swift, but I did have to switch to using my Mac to do it. This year, I’m learning Python by using a Raspberry Pi 4 directly connected to my iPad via USB. Should be another fun month!
- duckarmada 7y agoI've been creating multiline strings and then just using components(separatedBy:)
- dmitriid 7y agoI couldn't figure it out on a Mac. Then I Googled it, and decided I'm better off solving this in languages I know (whatever I feel like today: JS, Python, Java, perhaps even Erlang) or in a language that has a reasonable standard library (Rust) than in this mess: https://twitter.com/dmitriid/status/1201441652507844608 https://twitter.com/dmitriid/status/1201441652507844608
- melling 7y agoLast night I gave the complete solution in Swift below. Here are the two lines to read the file: let path = Bundle.main.url(forResource: "input01", withExtension: "txt") var text = try String(contentsOf: path!, encoding: .utf8)
- dmitriid 7y agoThere's no chance in hell anyone learning Swift can figure these two lines out. Besides, there are immediate additional questions: - what's a bundle, and why does a Bundle deal with urls? - What's the difference between Bundle.main.url and FileManager.main.urls, and why one and not the other? - where does the resource come from? - how do I read a file from a path? - Why is String responsible for reading (and writing!) contents of a file? In which world is this good design?
- sammorrowdrums 7y agoI use pastebin raw and get stuff from web requests sometimes rather than local files.