Write a program in Ruby that takes one command line argument (referred to going forward as n). If n is not a perfect square print an appropriate error message and exit. If n is a perfect square then create a sequence from 1 to n and build a matrix from the sequence by walking in counter-clockwise spiral order. Examples below illustrate this for n=1,4,9,16 but your solution should work for any n that is a perfect square. Once you have built the matrix print it, ensuring even column widths as in examples below and then exit.
Input: 1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
# | |
namespace :db do | |
desc 'Update all model`s counters' | |
task :reset_counters => :environment do | |
Dir.glob(Rails.root + '/app/models/*.rb').each { |file| require file } | |
models = Rails::VERSION::MAJOR >= 3 ? ActiveRecord::Base.connection.tables.map {|t| t.classify.constantize rescue nil}.compact : Object.subclasses_of(ActiveRecord::Base) | |
models.each do |model| |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
# Just use 'mysql2_downcase' adapter in database.yml | |
# | |
require 'active_record/connection_adapters/mysql2_adapter' | |
module ActiveRecord | |
class Base | |
# Establishes a connection to the database that's used by all Active Record objects. | |
def self.mysql2_downcase_connection(config) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class AddTypusAttributesToUsers < ActiveRecord::Migration | |
def self.up | |
add_column :users, :role, :string | |
add_column :users, :status, :boolean, :null=>false, :default=>true | |
User.find(1).update_attribute(:role,'admin') | |
end | |
def self.down | |
remove_column :users, :role | |
remove_column :users, :status |
NewerOlder