diff --git a/arduino/bluetooth_arduino.cpp b/arduino/bluetooth_arduino.cpp new file mode 100644 index 0000000..cc7ded6 --- /dev/null +++ b/arduino/bluetooth_arduino.cpp @@ -0,0 +1,47 @@ +// Basic Bluetooth sketch HC-06_01 +// // Connect the Hc-06 module and communicate using the serial monitor +// // +// // The HC-06 defaults to AT mode when first powered on. +// // The default baud rate is 9600 +// // The Hc-06 requires all AT commands to be in uppercase. NL+CR should not be +// added to the command string +// // +// +// +// #include +// SoftwareSerial BTserial(2, 3); // RX | TX +// // Connect the HC-06 TX to the Arduino RX on pin 2. +// // Connect the HC-06 RX to the Arduino TX on pin 3 through a voltage +// divider. +// // +// +// +// void setup() +// { +// Serial.begin(9600); +// Serial.println("Enter AT commands:"); +// +// // HC-06 default serial speed is 9600 +// BTserial.begin(9600); +// } +// +// void loop() +// { +// +// // Keep reading from HC-06 and send to Arduino +// Serial Monitor +// if (BTserial.available()) +// { +// Serial.write(BTserial.read()); +// } +// +// // Keep reading from +// Arduino Serial Monitor +// and send to HC-06 +// if +// (Serial.available()) +// { +// BTserial.write(Serial.read()); +// } +// +// } diff --git a/arduino/bluetooth_serial_test.py b/arduino/bluetooth_serial_test.py new file mode 100755 index 0000000..918bb4b --- /dev/null +++ b/arduino/bluetooth_serial_test.py @@ -0,0 +1,21 @@ +#!/usr/bin/python + +# +# - Pair bluetooth useing bluetoothctl. +# agent on +# pair 20:16:02:14:58:51 +# - Setup serial connection: +# sudo rfcomm bind hci0 20:16:02:14:58:51 1 +# +# - For module +# sudo apt-get install python-serial +# + +import serial +from time import sleep + +bluetoothSerial = serial.Serial( "/dev/rfcomm0", baudrate=9600 ) + +bluetoothSerial.write( "Test from python." ) +print bluetoothSerial.readline() + diff --git a/puzzles/interviews/training/preorder_tree_construction.cpp.orig b/puzzles/interviews/training/preorder_tree_construction.cpp.orig new file mode 100644 index 0000000..595e16a --- /dev/null +++ b/puzzles/interviews/training/preorder_tree_construction.cpp.orig @@ -0,0 +1,102 @@ +/* +VIM: let b:lcppflags="-std=c++11 -O2 -pthread" +VIM: let b:wcppflags="/O2 /EHsc /DWIN32" +VIM: let b:argv="" +*/ +#include +<<<<<<< HEAD +#include +||||||| merged common ancestors +======= +#include +>>>>>>> preorder tree construction: much better algorithm. No need to keep root. +#include + +struct node { + node * left = nullptr; + node * right = nullptr; + double data = 0; + + node( double d ) + : data(d) + {} +}; + +node * prefix_to_tree( const std::vector& v ){ + + if ( !v.size() ){ + return nullptr; + } + + node * root = new node(v[0]); + + std::stack stack; + stack.push(root); + + for ( int i = 1; i < v.size(); ) { + if ( v[i] < stack.top()->data ){ + auto n = new node(v[i++]); + stack.top()->left = n; + stack.push(n); + } else { + auto c = stack.top(); + stack.pop(); + while( !stack.empty() && stack.top()->data < v[i] ){ + c = stack.top(); + stack.pop(); + } + + auto n = new node(v[i++]); + c->right = n; + stack.push(n); + } + } + + return root; +} + +void print( node * root, const std::string& level = "" ){ + if ( root ) { + print( root->left, level + " "); + std::cout << level << "- " << root->data << std::endl; + print( root->right, level + " "); + } +} + +void traverse( node * root, std::vector& v ){ + if ( root ) { + v.push_back(root->data); + traverse(root->left, v); + traverse(root->right, v); + } +} + +void test( const std::vector& v ){ + std::cout << "-----------------------------------------------------" << std::endl; + auto r = prefix_to_tree( v ); + print( r ); + std::vector w; + traverse( r, w ); + if ( v.size() != w.size() ) { + std::cout << "v.size() != w.size() => " << v.size() << " != " << w.size() << std::endl; + } + for (int i = 0; i < v.size(); ++i ){ + if (v[i]!=w[i]){ + std::cout << "error at index " << i << " -> "<< v[i] << " != " << w[i] << std::endl; + } + } +} + +int main( void ) { + + test( {1} ); + test( {2, 1, 3} ); + test( {4, 2, 1, 3, 6, 5, 7} ); + test( {8, 4, 2, 1, 3, 6, 5, 7, 12, 10, 9, 11, 14, 13, 15} ); + test( {8, 4, 2, 3, 6, 5, 7, 12, 10, 9, 11, 14, 13, 15} ); + test( {8, 4, 6, 5, 7, 12, 10, 9, 14, 13, 15} ); + test( {8, 12, 10, 9, 11, 14, 13, } ); + test( {8, 4, 2, 1, 6, 12, 10, 11, 14, 15} ); + + return 0; +}