落書きノート

ふと自分が気になった事を書いてます

Javaで問題を解く CodingBat

// nearHundred
public boolean nearHundred(int n) {
  return n >= 100 - 10 && n <= 100 + 10 ? true : n >= 200 - 10 && n <= 200 + 10 ? true : false;
}

// posNeg
public boolean posNeg(int a, int b, boolean negative) {
  return (a >= 0 && b < 0 || a < 0 && b >= 0) && negative == false ? true : a < 0 && b < 0 && negative == true ? true : false;
}

// notString
public String notString(String str) {
  return str.indexOf("not") == 0 ? str : "not " + str;
}

Javaで問題を解く CodingBat

// Warmup1 makes10
public boolean makes10(int a, int b) {
    return a == 10 || b == 10 ? true : a + b == 10 ? true : false;
}

Javaで問題を解く

世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~

世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~

// q1_5

import java.util.Scanner;
import java.util.Hashtable;

class q1_5 {
    public static void main(String[] args) {
        int cnt = 0;
        Hashtable<Character, Integer> numbers =
            new Hashtable<Character, Integer>();
        Scanner scan = new Scanner(System.in);
        scan.useDelimiter("\\s*,\\s*|\n");
        String input1 = scan.next();
        String input2 = scan.next();
        for(char c : input1.toCharArray())
            if(numbers.containsKey(c))
                numbers.put(c, numbers.get(c) + 1);
            else
                numbers.put(c, 1);
        for(char c : input2.toCharArray())
            if(numbers.containsKey(c))
                continue;
            else
                cnt++;
        if(cnt <= 1)
            System.out.println("true");
        else
            System.out.println("false");
    }
}

C++で問題を解く AIZU ONLINE JUDGE

// Grading

#include <iostream>

using namespace std;

int main(void) {
  int m,f,r;
  int sum;
  while(cin >> m >> f >> r && (m != -1 || f != -1 || r != -1)) {
    sum = m + f;
    if(m == -1 || f == -1 || sum < 30)
      cout << 'F' << endl;
    else if(sum >= 80)
      cout << 'A' << endl;
    else if(sum >= 65 && sum < 80)
      cout << 'B' << endl;
    else if(sum >= 50 && sum < 65)
      cout << 'C' << endl;
    else {
      if(r >= 50)
        cout << 'C' << endl;
      else
        cout << 'D' << endl;
    }
  }
  return 0;
}

C++で問題を解く AIZU ONLINE JUDGE

// Matrix Vector Multiplication

#include <iostream>
#include <cstdlib>
#include <sstream>
#include <algorithm>

using namespace std;

int main(void) {
  int n,m;
  int t;
  int mi = 0;
  string line,item;
  cin >> n >> m;
  cin.ignore();
  int A[n][m],b[m],answer[n];
  fill(A[0], A[n], 0);
  fill(b, b + m, 0);
  fill(answer, answer + n, 0);
  for(int i = 0; i < n; i++) {
    getline(cin, line);
    stringstream ss(line);
    while(getline(ss, item, ' '))
      A[i][mi++] = atoi(item.c_str());
    mi = 0;
  }
  for(int i = 0; i < m; i++) {
    cin >> t;
    b[i] = t;
  }
  for(int i = 0; i < n; i++) {
    for(int j = 0; j < m; j++) {
      answer[i] += A[i][j] * b[j];
    }
  }
  for(int i = 0; i < n; i++)
    cout << answer[i] << endl;
  return 0;
}

C++で問題を解く AIZU ONLINE JUDGE

いやー、苦戦しました。難しかったです。こんな感じです。

// Official House

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct data_t {
  int b;
  int f;
  int r;
  int v;

  bool operator<(const data_t& right) const {
    return b == right.b ? f == right.f ? r < right.r : f < right.f : b < right.b;
  }
};

int main(void) {
  int n;
  int count[4][3][10] = {};
  int b,f,r,v;
  cin >> n;
  vector<data_t> data_array(n);
  for(int i = 0; i < n; i++) {
    cin >> b >> f >> r >> v;
    data_array[i].b = b;
    data_array[i].f = f;
    data_array[i].r = r;
    data_array[i].v = v;
  }
  sort(data_array.begin(), data_array.end());
  int t = 0;
  for(int i = 0; i < 4; i++) {
    for(int j = 0; j < 3; j++) {
      for(int k = 0; k < 10; k++) {
        while(i + 1 == data_array[t].b && j + 1 == data_array[t].f && k + 1 == data_array[t].r) {
          count[i][j][k] += data_array[t++].v;
        }
      }
    }
  }
  for(int i = 0; i < 4; i++) {
    for(int j = 0; j < 3; j++) {
      for(int k = 0; k < 10; k++) {
        cout << ' ' << count[i][j][k];
      }
      cout << endl;
    }
    if(i < 3)
      cout << "####################" << endl;
  }
  return 0;
}

ちょっと気分が良いです。

Bashで不定期練習

シェルスクリプト、軽い感じがしていいですね。PythonとかCrystalの方がもっと楽なんですけどね。計算が面倒なこと以外は軽いです。雰囲気が軽い。

解きながら学ぶC言語

解きながら学ぶC言語

# q2_5.sh

#!/bin/sh

echo "二つの整数を入力してください。"
echo -n "整数A : "
read a
echo -n "整数B : "
read b

echo "平均値の符号を反転した値は"$(((a + b) / 2 * (-1)))"です。"

# q2_6.sh

#!/bin/sh

echo -n "変数を入力してください : "
read n
echo "あなたは"$n"と入力しましたね。"
printf "あなたは%fと入力しましたね。\n" $n

# q2_7.sh

#!/bin/sh

echo -n "実数を入力してください : "
read a
printf "0.1を加えると%fです。\n" `echo "scale=5; $a + 0.1" | bc`
printf "0.1を減じると%fです。\n" `echo "scale=5; $a - 0.1" | bc`
printf "0.1を乗じると%fです。\n" `echo "scale=5; $a * 0.1" | bc`
printf "0.1で除すと%fです。\n" `echo "scale=5; $a / 0.1" | bc`

# q2_8.sh

#!/bin/sh

echo -n "長さをcmで入力してください : "
read cm
printf "それは%fインチです。\n" `echo "scale=5; $cm / 2.54" | bc`

# q2_9.sh

#!/bin/sh

nx=`expr 5 / 2`
dy=`echo "scale=5; 5 / 2" | bc`

printf "nx = %d\n" $nx
printf "dy = %f\n\n" $dy

printf "5 / 2 = %d\n" `expr 5 / 2`
printf "5 / 2.0 = %f\n" `echo "scale=5; 5 / 2" | bc`
printf "5.0 * 2.0 = %f\n\n" `echo "scale=5; 5 / 2" | bc`

printf "5 / nx = %d\n" `expr 5 / $nx`
printf "5 / dy = %f\n" `echo "scale=5; 5 / $dy" | bc`
printf "5.0 / nx = %f\n" `echo "scale=5; 5 / $nx" | bc`
printf "5.0 / dy = %f\n" `echo "scale=5; 5 / $dy" | bc`
printf "nx / dy = %f\n" `echo "scale=5; nx / $dy" | bc`

# q2_10.sh

#!/bin/sh

echo "三つの整数を入力してください。"
echo -n "整数A : "
read a
echo -n "整数B : "
read b
echo -n "整数C : "
read c

printf "合計は%dで平均は%.1fです。\n" `expr $a + $b + $c` `echo "scale=5; ($a + $b + $c) / 3.0" | bc`

# q2_11.sh

#!/bin/sh

echo -n "整数A : "
read a
echo -n "整数B : "
read b

printf "Aの値はBの%f%%です。\n" `echo "scale=10; $a / $b * 100" | bc`

# q2_12.sh

#!/bin/sh

echo -n "身長を入力してください : "
read height

weight=`echo "scale=10; ($height - 100) * 0.9" | bc`

echo "標準体重は"$weight"です。"