Archive for det där med data

5 år

Igår satt jag med ytterligare en algoritmuppgift. Jag tror att jag behöver hitta höjden på ett binärt sökträd och kunde verkligen inte minnas hur jag räknade ut det. Så jag gjorde något så omodernt (men fungerande) som att gå till bokhyllan och hämta min första mattebok på universitetet – Endimensionell analys.

Så nu kan jag även programmatisk implementera att jag idag fyller jämt 5 år (k = 5).

int n = Math.pow(2, k)
int k = Math.log(n) / Math.log(2)

Palindrome #1

Det kanske är dags att kolla på Java 8 grejer.

Uppgiften är från hackerrank att beräkna antal ändringar som behövs för att göra ett ord till ett palindrom.

Löst med IntStream

import java.util.stream.IntStream;

int palindromeChanges =
    IntStream.range(0, word.length()/2)
        .map(idx -> Math.abs(
            (char)word.charAt(idx) -
            (char)word.charAt(word.length()-idx-1)
        ))
        .sum();

 

Och vanlig for-loop

int sum = 0;
for(int idx = 0; idx < word.length()/2; idx++) {
    sum += Math.abs(
        (char)word.charAt(idx) -
        (char)word.charAt(word.length()-idx-1)
    );
}

 

Jag vet inte riktigt om jag tycker det är så stor skillnad än så länge… men, hade iaf tillfälle att titta på andra stream() funktioner, som reduce och filter.

Nu är det sovdags!

diagonal difference

Min lösning på hackerrank – diagonal difference

Framförallt nöjd att jag skrev rätt på första försöket (:

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int N = Integer.parseInt(in.nextLine());
        int sum1 = 0;
        int sum2 = 0;
        
        int c2 = N - 1;
        for(int i = 0; i < N; i++) {
            String[] row = in.nextLine().split(" ");
            int value1 = Integer.parseInt(row[i]);
            sum1 += value1;
            int value2 = Integer.parseInt(row[c2--]);
            sum2 += value2;
        }
        
        System.out.println(Math.abs(sum1-sum2));
    }
}

find divisors

//input
int N;
//output
List divisors = new ArrayList<>();

//counter
int c = 2;
//find divisors of N
while(c <= Math.sqrt(N)) {
    if(N % c == 0) {
        divisors.add(N);
        if(c != (N / c)) {
            divisors.add(N/c);
        }
    }
}

nionde mars tjugohundrafjorton

Tillsammans med komponenterna kom en mini-wifi-adapter, TL-WN725N version 2.

Den behöver ej medföljande drivare för att köra på linux, men, internet är stort och har många svar. De drivare som jag hittade färdigkompilerade var för en ren Rasbian Wheezy i olika versioner, inte installerad med berryboot – istället för att försöka ta reda på vilken version av kerneln jag egentligen körde, alternativt kompilera drivern själv – så körde jag lathet och tog ner en .img av endast Rasbian.

Fick därefter inte dd att skapa ett giltig sd-card, raspberryn påstod strömfel (red steady light) – så det blev windowsmaskinen som fick skriva imgen till kortet.

Passade på att läsa ut Baby Jane av Sofi Oksanen i väntetiden. Många hopp i tiden, men ändå lite oväntat slut. Igenkänningsfaktor på vissa plan, men inte alltid så rimlig rent praktiskt. Kanske för att den utspelar sig i ett annat land, i en annan tid? Trevligt språk.

söndagsfilm

En hel söndag med hallonet (:

Beställde pryttlar för att leka med GPIO, men det är helg så får vänta lite till med att… tända en LED lampa. Istället en tur till Claes Ohlson och införskaffa ett till SD-kort.

Någon form av mediacenter, även om hårddisken med det mesta i musik och filmväg verkar ha trillat i backen en gång för mycket, var planen. Så långt som till raspmc och spotimc, styra med xbmc remote och senare kanske dela ut film från den eivor kom jag. Bara lilla detaljen att vi inte har någon TV…

Det andra kortet tänkte jag förutom labba med GPIO:n roa mig med småprojekt tills jag kommit så långt att det är någon vits med att införskaffa ytterligare en raspberry. Tidigare har jag hostat lite web och även med mopidy. Nu köpte jag en liten datorhögtalare (i form av en glad bomb) så mopidy, med spotify extension – krånglade lite med startupskriptet, men mopidy-webclient hade fått ett nytt trevligt gränssnitt så nu kan jag… eh, spela spotify från mobilen? :p Fast, utan att använda hörlurar – den där glada bomben knastrar nästan lika mycket som mobilen gör utan hörlurar…

En hel dag med data, nöjd, även om min pocket/read-it-later lista blivit bra mycket längre…