new repo
This commit is contained in:
parent
64ea959b51
commit
1df4d28705
35
Makefile
Normal file
35
Makefile
Normal file
@ -0,0 +1,35 @@
|
||||
CC=gcc
|
||||
CXX=g++
|
||||
RM=rm -f
|
||||
CP=cp
|
||||
MKDIR=mkdir -p
|
||||
CPPFLAGS=-Wall -O2 -std=c++11
|
||||
LDFLAGS=
|
||||
LDLIBS=
|
||||
|
||||
TOOL=ranlin
|
||||
SRCS=main.cpp
|
||||
OBJS=$(subst .cpp,.o,$(SRCS))
|
||||
|
||||
all: $(TOOL)
|
||||
|
||||
$(TOOL): $(OBJS)
|
||||
$(CXX) $(LDFLAGS) -o $(TOOL) $(LDLIBS) $(OBJS)
|
||||
|
||||
depend: .depend
|
||||
|
||||
.depend: $(SRCS)
|
||||
$(RM) ./.depend
|
||||
$(CXX) $(CPPFLAGS) -MM $^>>./.depend;
|
||||
|
||||
clean:
|
||||
$(RM) $(OBJS)
|
||||
|
||||
dist-clean: clean
|
||||
$(RM) *~ ./.depend $(TOOL)
|
||||
|
||||
install:
|
||||
$(RM) ~/bin/$(TOOL)
|
||||
$(CP) $(TOOL) ~/bin/
|
||||
|
||||
include .depend
|
40
main.cpp
Normal file
40
main.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
//
|
||||
// main.cpp
|
||||
// ranlin
|
||||
//
|
||||
// Created by Bob Polis on 05-03-15.
|
||||
// Copyright (c) 2015 Thalictrum. All rights reserved.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <random>
|
||||
using namespace std;
|
||||
|
||||
double next_random() {
|
||||
static random_device dev;
|
||||
static default_random_engine engine {dev()};
|
||||
static uniform_real_distribution<double> dist {0, 1};
|
||||
return dist(engine);
|
||||
}
|
||||
|
||||
string random_line_from_file(istream& file) {
|
||||
string line;
|
||||
string result;
|
||||
for (int nr {1}; getline(file, line); ++nr) {
|
||||
if (next_random() * nr < 1.0) {
|
||||
result = line;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int main(int argc, const char * argv[]) {
|
||||
if (argc > 1) {
|
||||
ifstream infile {argv[1]};
|
||||
cout << random_line_from_file(infile) << '\n';
|
||||
} else {
|
||||
cout << random_line_from_file(cin) << '\n';
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user