初心者によるArduinoとProcessingを使ったロボット製作

初心者ですがArduinoとProcessingを使ったロボット製作をやっています。 将来は宇宙や深海や道端を家から遠隔で操作できるようなロボットを作りたいです。 ちなみに2chも好きです。相互RSS希望があれば連絡ください。processingのPDEは、Processing Development Environmentの略みたいです。

今はArduinoとProcessingを使ったビジュアルサーボの記事をたくさん書きたいと思っています。

カテゴリ: アルゴリズム

この問題は、1125っていう入力が与えられたら、足し算引き算の演算子を入れて、
1-1+2+5=7
みたいに出力するっていうものです。

つまり、+か-かを全パターン試して当てはまるものを出力すれば良いのです。
(僕のコードは恥ずかしいものです)
なので2^3=8通りしかないです。
だから、For文を使うとだいぶ見えづらくなります。
For文を使わない公式の回答の方がだいぶ良いです。








続きを読む

この問題は、簡単に言うと座標の遷移が可能かどうかを扱う問題です。
最初はt=x=y=0で、1秒経つとxかy方向で座標1だけ移動できます。

例えば、3 1 2 って入力が来たらそれは移動可能ですよね。
(t,x,y)と表記すると、
(0,0,0)→(1,1,0)→(2,1,1)→(3,1,2)
ってなりますよね。
続きを読む

ナップザック問題と似ているいわゆるコイン問題です。
競技プログラミングでは定番であります。

アルゴリズムはいわゆる総当たりで計算する感じです。めちゃくちゃ無駄があります。

アルゴリズム
10000円札、5000円札、1000円札の枚数をそれぞれa,b,cでおいてそれぞれをForループで動かす
If文で枚数Nと金額Yが合致したらOK判定する

以下コード

続きを読む

これもアルゴリズムが難しいですよね。

僕が考えたアルゴリズムは、
与えられた文字列の一部を順番に抜き出していく
dreamがあったら、dreamなのかdreamerなのかを区別する。
eraseがあったら、eraseなのかeraserなのかを区別する
照合をミスったらBreakしてアウト判定する


続きを読む

C++のVectorに複数の値を代入するにはどうすれば良いのか?
って調べると大半が、
vector<int> v1{1, 2, 3, 4}; 
とか
v1.push_back(123); 
って出てきます。






僕が知りたいのは、一度宣言した後にもう一度新しく複数の値を宣言することです。
vector<int> v1{1, 2, 3, 4};ってやってしまうと、同じベクトルについてまた宣言を新しくやってしまうことになってしまうのです。
答えはこれでした。
v1 = {4, 5, 6};
普通の配列と同じです。。w

再代入とも言うのかもしれませんね。
#include<iostream>
#include<vector>
using namespace std;

int main(){
    std::vector<int> v1 = {1, 2, 3};
    for (int i = 0; i < 3; ++i)
        cout << v1[i];
    cout << endl;
    v1 = {4, 5, 6};
    for (int i = 0; i < 3; ++i)
        cout << v1[i];

    return 0;
}

出力は
123
456
になります
最初に{1, 2, 3}だったものが{4, 5, 6}に置き換わったのを表現しています。


半年だけ働く。
村上 アシシ
朝日新聞出版
2017-12-20




CSVファイル:数値や文字列が『,』(カンマ)で区切られているファイルです。
これ、実は数値についてはfscanfの普通の使い方でいけます。
ただ、文字列については問題が起きます。

読み込むファイルがこうだとします。
sample.csv
ID1,1,11,1.02,1.12
ID2,2,21,2.20,2.12
ID3,3,31,3.02,3.21
コードはこういうふうになります。
    #include <stdio.h>

    int main(void)
    {
      FILE *fp;
      char *filename = "sample.csv";
      char s[100];
      int ret, n1, n2;
      float f1, f2;

      fp = fopen( filename, "r" );
      if( fp == NULL ){
        printf( "%sファイルが開けません¥n", filename );
        return -1;
      }

      while( ( ret = fscanf( fp, "%[^,],%d,%d,%f,%f", s, &n1, &n2, &f1, &f2 ) ) != EOF ){
        printf( "%s %d %d %f %f", s, n1, n2, f1, f2 );
      }

      fclose( fp );
      return 0;
    }

この出力は、こうなります。
ID1 1 11 1.020000 1.120000
ID2 2 21 2.200000 2.120000
ID3 3 31 3.020000 3.210000

僕がずっと疑問なのが、While文の中で
printf( "%s %d %d %f %f", s, n1, n2, f1, f2 );
の部分で改行の\nをいれていないのに改行されていることです。
めちゃくちゃ不思議です。





まずコードが以下です。
#include <stdio.h>
int main(void){
    
    int temp;
    double test;
    test = (1.0-0.01*90.0)*100.000;
    printf("%f\n" , test );
    temp = (int)test;
    printf("%d\n" , temp );
    printf("%f\n" , temp );
    
    return 0;
}

それで結果が以下のようになります。
10.000000
9
10.000000

続きを読む

みなさんファイル管理どうしてますか?

ここでいう、ファイル管理とは、
・前作ったコードがどこにあるかわからないから、探す際に何を手がかりにするか?とか
・コードを改良したいけど、このままのコードも残しておきたい。とか
です。





続きを読む

過学習はデータにフィッティングする関数の自由度が高すぎて、結果的にうまくフィッティングできていないことで、未学習は
・自由度が低くて、または
・データが少なすぎて、
うまくフィッティングできていないことを示します。 




続きを読む

最適化問題を現実に適応するような学問。あまり最適化と区別しないことも。
数理モデル(”現実”を式で表したもの)の、 最適解を求めるための方法
例:最適解というのは利益の問題なら、利益が最大化。輸送の問題なら、最短ルートや最小化。
 




続きを読む

↑このページのトップヘ